写点什么

C#入门系列 (二十四) -- 密封类和静态类

作者:陈言必行
  • 2022 年 7 月 19 日
  • 本文字数:877 字

    阅读完需:约 3 分钟

密封类

如果类定义时使用sealed修饰符进行修饰,则说明该类是一个密封类。


密封类只能被用作独立的类,不能从密封类派生出其他类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。


定义形式:


sealed class 类名{    成员列表}
复制代码


密封类不能同时声明为抽象类。当调用密封类实例的虚函数成员时可以转换为非虚调用来处理。可以使用密封来限制开发人员扩展某些指定的框架。


建议密封类使用情况:


  1. 类是静态类;

  2. 类包含带有安全敏感信息的继承的受保护成员;

  3. 类继承多个虚成员,并且密封每个成员的开发和测试开销明显大于密封整个类;

  4. 类是一个要求使用反射进行快速搜索的属性。密封属性可提高反射在检索属性时的性能。


其他注意事项:


  不要在密封类中声明受保护成员或虚成员。因为如果类是密封的,则它不能有派生类。受保护成员只能从派生类进行访问,虚成员也只能在派生类中重写。



静态类

使用static修饰符声明的类称为静态类。


静态类是密封的,不能实例化,不能用作类型,而且仅可以包含静态成员。


定义形式:


static class 类名{    成员列表}
复制代码


使用静态类时需要遵守下面的规则:


  1. 静态类不可包含sealedabstract修饰符;

  2. 静态类不能显式指定基类或所实现接口的列表,它隐式的从 object 类继承;

  3. 静态类只能包含静态成员

  4. 静态类不能含有声明的可访问性为protectedprotected internal的成员


其他注意事项:


  • 静态类没有实例构造函数。

  • 静态类可以包含静态构造函数。如果非静态类包含需要进行重要的初始化的静态成员,也应定义静态构造函数。

  • 静态类的成员并不会自动成为静态的,成员声明中必须显式包含一个 static 修饰符




示例代码


class Program{    static void Main(string[] args)    {        // 静态类使用
// 访问静态属性 输出:1 Console.WriteLine(Test.A);
// 调用静态方 输出:静态方法Show Test.Show();
Console.ReadKey(); }}
// 静态类public static class Test{ // 静态字段 public static int A = 1;
// 静态方法 public static void Show() { Console.WriteLine("静态方法Show"); }}
复制代码


发布于: 刚刚阅读数: 3
用户头像

陈言必行

关注

公号:开发同学留步 2019.03.12 加入

我是一个从事Unity游戏开发攻城狮,6年开发经验,助你日常不加班。

评论

发布
暂无评论
C#入门系列(二十四) -- 密封类和静态类_七月月更_陈言必行_InfoQ写作社区