C#入门系列 -- 密封类和静态类

举报
陈言必行 发表于 2022/03/19 13:55:04 2022/03/19
【摘要】 密封类如果类定义时使用sealed修饰符进行修饰,则说明该类是一个密封类。密封类只能被用作独立的类,不能从密封类派生出其他类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。定义形式:sealed class 类名{ 成员列表}密封类不能同时声明为抽象类。当调用密封类实例的虚函数成员时可以转换为非虚调用来处理。可以使用密封来限制开发人员扩展某些指定的框架。建议密封类使用情况:...

密封类

如果类定义时使用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");
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。