茂名企业自助建站如何查网站关键词
web/
2025/9/29 2:24:38/
文章来源:
茂名企业自助建站,如何查网站关键词,中文网站建设设计,推广链接让别人点击静态类 继承#xff08;多态#xff09;、静态本身就是相反的。另外需要知道属性、事件其实是些特殊的方法。 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。 static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数#xff0c;但不能用于索…静态类 继承多态、静态本身就是相反的。另外需要知道属性、事件其实是些特殊的方法。 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。 static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数但不能用于索引器、析构函数或类以外的类型。 静态类与非静态类基本相同但存在一个区别静态类不能实例化。 也就是说不能使用 new 关键字创建静态类类型的变量。 因为没有实例变量所以要使用类名本身访问静态类的成员 对于 只对输入参数进行运算 而不获取或设置 任何内部实例字段的方法集静态类可以方便地用作这些方法集的容器。 例如在 .NET Framework 类库中静态类 System.Math 包含的方法只执行数学运算而无需存储或检索特定 Math 类实例特有的数据。 就是说通过指定类名称和方法名称来应用类成员。 和所有类类型一样当加载引用静态类的程序时.NET Framework 公共语言运行时 (CLR) 将加载该静态类的类型信息。程序不能指定加载静态类的确切时间。 但是可以保证在程序中首次引用该类前加载该类并初始化该类的字段并调用其静态构造函数。 静态构造函数仅调用一次在程序驻留的应用程序域的生存期内静态类一直保留在内存中。
下表介绍静态类的主要特性
仅包含静态成员。无法实例化。是密封的。不能包含实例构造函数。因此创建静态类与创建仅包含静态成员和私有构造函数的类基本相同。 私有构造函数阻止类被实例化。使用静态类的优点在于编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实例。 静态类是密封的因此不可被继承。 它们不能从除 Object 外的任何类中继承。 静态类不能包含实例构造函数但可以包含静态构造函数。 如果非静态类包含需要进行重要的初始化的静态成员也应定义静态构造函数。
静态类构造函数 静态构造函数用于初始化任何 静态 数据或用于执行仅需执行一次的特定操作。 在创建第一个实例或引用任何静态成员之前将自动调用静态构造函数。
例如
class SimpleClass
{ static readonly long baseline; static SimpleClass() { baseline DateTime.Now.Ticks; }
} 静态构造函数具有以下特点
静态构造函数既没有访问修饰符也没有参数。在创建第一个实例或引用任何静态成员之前将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中用户无法控制何时执行静态构造函数。静态构造函数的典型用途是当类使用日志文件时将使用这种构造函数向日志文件中写入项。静态构造函数在为非托管代码创建包装类时也很有用此时该构造函数可以调用 LoadLibrary 方法。如果静态构造函数引发异常运行时将不会再次调用该构造函数并且在程序运行所在的应用程序域的生存期内类型将保持未初始化。
静态成员 非静态类可以包含静态的方法、字段、属性或事件。 即使没有创建类的实例也可以调用该类中的静态成员。 始终通过类名而不是实例名称访问静态成员。 无论对一个类创建多少个实例它的静态成员都只有一个副本。 静态方法和属性不能访问其包含类型中的非静态字段和事件并且不能访问任何对象的实例变量除非在方法参数中显式传递。 更常见的做法是声明具有一些静态成员的非静态类而不是将整个类声明为静态类。 静态字段有两个常见的用法一是记录已实例化对象的个数二是存储必须在所有实例之间共享的值。 静态方法可以被重载但不能被重写因为它们属于类不属于类的任何实例。 虽然字段不能声明为 static const但 const 字段的行为在本质上是静态的。 这样的字段属于类型不属于类型的实例。 C# 不支持静态局部变量在方法范围内声明的变量。 通过在成员的返回类型之前使用 static 关键字可以声明静态类成员也就是在方法的返回类型前加static。 静态成员在第一次被访问之前并且在调用静态构造函数如有存在之前进行初始化。 若要访问静态类成员应使用类名而不是变量名来指定该成员的位置。
自问自答自娱自乐 静态成员与实例成员的性能对比和生成调用指令的差别有哪些 对静态方法的调用以 Microsoft 中间语言 (MSIL) 生成调用指令而对实例方法的调用生成 callvirt 指令该指令还检查 null 对象引用。 但是两者之间的性能差异在大多数时候并不明显。 为什么静态类不能被继承 经反编译查看Static内部是用sealed和abstract两个关键字组合实现的也就是说没有static这个关键字只是为了方便区别。 静态类的使用和实例类中静态成员的使用技巧 对于 只对输入参数进行运算 而不获取或设置 任何内部实例字段的方法集静态类可以方便地用作这些方法集的容器。也就是说这个类只是一个工具类里面都是些方法。 常见的做法是声明具有一些静态成员的非静态类而不是将整个类声明为静态类。由于无论对一个类创建多少个实例它的静态成员都只有一个副本所以静态字段有两个常见的用法一是记录已实例化对象的个数二是存储必须在所有实例之间共享的值。 静态类和非静态类之间的包含关系 非静态类可以包含静态类成员静态类只能包含静态成员。如下所示 Static class staticclass{//只能是静态成员} Class newClass{//可以包含静态成员} 尽管类的实例包含该类所有实例字段的单独副本但每个静态字段只有一个副本。 静态类成员声明字段的特殊性
class Test
{ static int x y; static int y 5; static void Main() { Console.WriteLine(Test.x); Console.WriteLine(Test.y); Test.x 99; Console.WriteLine(Test.x);}
}/*Output: 0 5 99 */ 什么情况下需要在一个普通类中编写一个静态成员而这个类不能标记static 当这个需要被实例化的时候如果这个类中有一个成员是所有对象都共享的数据这时可以将该类中的这个成员标记为静态的但是这个类还是一个实例类。
特别需要注意的有哪些呢
静态成员会在整个应用程序退出时才释放资源所以可以在整个应用程序中共享数据。当一个普通类添加静态字段后系统会默认为该类生成一个静态构造函数【静态构找函数不能有访问修饰符并且也不能带参数】静态方法可以被重载但不能被重写因为它们属于类不属于类的任何实例。不可以使用 this 来引用静态方法或属性访问器。类和静态类可以有静态构造函数。 静态构造函数在程序开始和类实例化之间的某个时刻调用。静态类的本质是abstractsealed组成。静态类不能被实例化是因为abstract不能被继承是因为sealed。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83643.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!