Jon*_*eet 86
简而言之,static实际上意味着"与类型相关联而不是类型的任何一个实例".因此,对于类型(在AppDomain中),有一组静态变量,无论您有0个实例还是100个实例; 您不需要实例来访问静态成员等.
静态变量初始化的确切点取决于是否还有一个静态构造函数,但从广义上讲它是"一次,通常在类中发生重大事件之前".(有关更详细的说明,请参阅此博客文章.)
虽然readonly字段可以是静态的也可以是实例(即与类型相关或与类型实例相关),但const值总是隐式静态的(它们是编译时常量,因此每个字符串只有一个副本没有意义实例).
您有时可能会将static其描述为"在类型的所有实例之间共享" - 我个人不喜欢该描述,因为它表明必须至少有一个实例...而实际上,您不需要任何实例使用静态成员.我更愿意将它们视为完全独立,而不是在实例之间"共享".
Jan*_*vil 12
我可以推荐这篇文章,看起来很有描述性: 静态关键字揭秘
我还推荐一篇官方的c#编程指南文章,其中涵盖了static关键字的各种用法.你可以从那里去,因为有很多链接到不同的MSDN文章:静态类和静态类成员(C#编程指南)
关于常量(常量)和只读的一点点:
使用示例:
constant:
const int a=10; // value cannot be modified, value is known at compile time
Run Code Online (Sandbox Code Playgroud)
但是,当我们想要在编译时不知道常量字段值时该怎么办?
e.g const PersonClass a=new PersonClass("name"); // error
Run Code Online (Sandbox Code Playgroud)
答案是一个只读字段:
readonly:
readonly PersonClass a=new PersonClass("name"); // all correct
Run Code Online (Sandbox Code Playgroud)
来自文档:
类的静态字段变量初始值设定项对应于按照文本顺序执行的赋值序列,它们出现在类声明中
静态成员在首次访问类时初始化,并以文本顺序执行.
Static方法,属性是类的一部分而不是实例.
Static与readonlyor 无关constant.Static就像是一个构件的方式acessed,readonly并且constant就像是一个构件的方式存储/管理的.
| 归档时间: |
|
| 查看次数: |
40703 次 |
| 最近记录: |