当前位置: 首页 > article >正文

C#核心(20)密封函数和命名空间

前言

上一节我们学习了一个抽象的但是有助于我们规范编程的知识点,这一节,我们就稍微讲点简单的东西,大家如果以后是要走游戏客户端开发的话,这里的知识点了解就好,因为其实我们游戏开发使用的更多是跟unity相关的c#知识点,有些面向更广泛的应用的东西我们是用不上的,因为引擎已经帮我们集成了,我们只用用别人的工具就行。

但是也不能完全不知道,了解这些有利于你去掌握整个的语言框架。

那么废话不多说,就开始我们今天关于密封函数和命名空间的讲解吧。

密封函数

基本概念

用密封子sealed修饰的重写函数

作用

让虚方法或者抽象方法之后不再被重写。

如果读者你还记得博主之前对密封类的描述,那应该你也记得我当时对密封类的说法是:结扎。

对就是不能生儿子,密封函数的道理是一样的。

特点

一般和override一起出现。

举例

这里我们用一个角色职业来为大家讲解这个知识点,这个知识点在你开发demo的时候用的比较少,但是如果合作开发,有些东西你不希望别人重写,就用的上了,这个就涉及到一些框架相关的问题了,这里博主就不多加赘述,如果你感兴趣可以自己去了解一些程序框架设计的问题。

using System;  

public class Character  
{  
    public int Health { get; private set; } = 100;  

    // 密封函数,确保所有派生类不能重写这个方法  
    public sealed void TakeDamage(int damage)  
    {  
        // 统一的受伤逻辑  
        Console.WriteLine($"{GetType().Name} 正在受到伤害!");  

        // 对于所有角色,受伤后减少生命值  
        Health -= damage;  
        if (Health < 0) Health = 0;  

        Console.WriteLine($"{GetType().Name} 现在的生命值是 {Health}.");  
    }  

    // 虚方法,让派生类可以重写  
    public virtual void Defend()  
    {  
        Console.WriteLine($"{GetType().Name} 正在防御!");  
    }  
}  

public class Warrior : Character  
{  
    //你可以尝试一下重写密封类,c#会自动给你报错
    public o

http://www.kler.cn/a/569699.html

相关文章:

  • DNS的解析流程
  • Ubuntu 22.04 安装Nvidia驱动加速deepseek
  • (下:补充——五个模型的理论基础)深度学习——图像分类篇章
  • 【C】链式二叉树算法题1 -- 单值二叉树
  • Pytorch 第六回:AlexNet卷积神经网络模型
  • 使用sam-vit-base 模型在caltech256 数据集上实现图片召回
  • FPGA开发,使用Deepseek V3还是R1(5):temperature设置
  • MySQL中的行级锁
  • Linux内核配置与构建原理
  • P8654 [蓝桥杯 2017 国 C] 合根植物---并查集!!!
  • 力扣1462. 课程表 IV
  • SpringSecurity的配置
  • AIGC(生成式AI)试用 26 -- 跟着清华教程学习 - DeepSeek与AI幻觉
  • 数字人技术再超越,TANGO 可生成与音频匹配的全身手势视频
  • Ubuntu20.04下各类常用软件及库安装汇总(联想Y9000P24款)
  • AI产品经理W1D4埋点设计数据采集
  • java关键字-instanceof
  • 具身智能(Embodied AI)的物理交互基准测试:构建真实世界的智能体评估体系
  • 奇妙跨界:将前端概念融入整数操作
  • Python 爬虫 – BeautifulSoup