C#中的“静态”
2015-08-19 14:47
113 查看
静态构造函数:
C#的一个新特征是也可以给类编写无参数的静态构造函数。编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第一次使用类之前,从外部源中初始化这些静态的字段和属性。
.NET运行库没有确保什么时候执行静态构造函数,所以不能把要求在某个特定时刻执行的代码放在静态构造函数中。也不能预计不同类的静态构造函数按照什么顺序执行。但是可以确保静态构造函数至多运行一次,即在代码引用类之前调用它。
静态构造函数没有访问修饰符,其他C#代码从来不调用它,但在加载类时,总是由.NET运行库调用它,所以像public或private这样的访问修饰符就没有任何意义。
出于同样的原因,静态构造函数不能带任何参数,一个类只能有一个静态构造函数。很显然,静态构造函数只能访问类的静态成员,不能访问类的实例成员。
注意,无参数的实例构造函数与静态构造函数可以在一个类中同时定义。尽管参数列表相同,但这并不矛盾,因为在加载类时执行静态构造函数,而在创建实例使执行实例构造函数,所以何时执行哪个构造函数并不冲突。
静态字段:
使用static修饰 属于类,不属于某个实例。
与实例字段一样,可以在声明的同时进行初始化。
与实例字段不同,如果没有对静态字段进行初始化,静态字段将自动获取默认值(0,null,false等)。所以,一个静态字段即使没有被显示地赋值,也可以被访问。
访问需要使用 类名.静态字段名,不能使用 对象名.静态字段名
静态方法:
使用static修饰,直接使用 类名.方法名
静态方法的函数体内不能直接使用非静态成员,也没有this.
静态类:
如果类只包含静态的方法和属性,该类就是静态类。静态类在功能上与使用私有静态构造函数创建的类相同,不能创建静态类的实例。
静态类是不能实例化的,我们直接使用它的属性与方法,静态类最大的特点就是共享。
C#的一个新特征是也可以给类编写无参数的静态构造函数。编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第一次使用类之前,从外部源中初始化这些静态的字段和属性。
.NET运行库没有确保什么时候执行静态构造函数,所以不能把要求在某个特定时刻执行的代码放在静态构造函数中。也不能预计不同类的静态构造函数按照什么顺序执行。但是可以确保静态构造函数至多运行一次,即在代码引用类之前调用它。
静态构造函数没有访问修饰符,其他C#代码从来不调用它,但在加载类时,总是由.NET运行库调用它,所以像public或private这样的访问修饰符就没有任何意义。
出于同样的原因,静态构造函数不能带任何参数,一个类只能有一个静态构造函数。很显然,静态构造函数只能访问类的静态成员,不能访问类的实例成员。
注意,无参数的实例构造函数与静态构造函数可以在一个类中同时定义。尽管参数列表相同,但这并不矛盾,因为在加载类时执行静态构造函数,而在创建实例使执行实例构造函数,所以何时执行哪个构造函数并不冲突。
class BaseClass { private static int count; static BaseClass() { count = 0; console.writeline("aaa"); } }
静态字段:
使用static修饰 属于类,不属于某个实例。
与实例字段一样,可以在声明的同时进行初始化。
与实例字段不同,如果没有对静态字段进行初始化,静态字段将自动获取默认值(0,null,false等)。所以,一个静态字段即使没有被显示地赋值,也可以被访问。
访问需要使用 类名.静态字段名,不能使用 对象名.静态字段名
静态方法:
使用static修饰,直接使用 类名.方法名
静态方法的函数体内不能直接使用非静态成员,也没有this.
静态类:
如果类只包含静态的方法和属性,该类就是静态类。静态类在功能上与使用私有静态构造函数创建的类相同,不能创建静态类的实例。
静态类是不能实例化的,我们直接使用它的属性与方法,静态类最大的特点就是共享。
public static class StaticTestClass { public static int n = 0; public static void Add() { n++; } }
相关文章推荐
- C#中的“静态”
- C#单例模式的三种写法
- C# Tostring 格式化输出字符串全解
- C#创建Windows Service(Windows 服务)基础教程
- C#基础--运算符及条件控制语句
- C# 发送16进制串口数据
- 编写高质量代码改善C#程序的157个建议——建议72:在线程同步中使用信号量
- C#调用默认浏览器打开网页的几种方法
- 编写高质量代码改善C#程序的157个建议——建议71:区分异步和多线程应用场景
- C#实现简易的加密、解密字符串工具类实例
- c#调用Excel绘制图表
- C# 调用window api大全
- Sublime Text 2 插件安装和Vim 模式设置写C#
- gsoap调用C#开发的WebService
- C#调用Web Service时的身份验证
- C#播放声音
- C# 测试PDF是否能打开 .
- 关于对象实例序列化加密解密并写入文件的技巧
- C#启动另外一个C#程序,并传递参数
- c# 查询 插入 access db 2007