我对 C# 中 static 关键字的真正含义感到很困惑。我浏览了互联网上的不同文章,但没有一篇真正帮助我理解它的含义,而且其他来源也不可信。我知道 Stack Overflow 有一些聪明的头脑可以帮助我理解 static like 的真正含义
- 当它们被初始化时。
- 静态方法、属性、类和构造函数
- 静态与只读与常量
最佳答案
简而言之,static 实际上意味着“与类型相关联,而不是与该类型的任何一个实例相关联”。所以对于一个类型(在 AppDomain 中),无论您有 0 个实例还是一百万个实例,都有一组静态变量;您不需要实例来访问静态成员等。
静态变量的确切初始化点取决于是否还有静态构造函数,但从广义上讲,它是“一次,通常在类中发生任何重要事件之前”。 (有关更详细的说明,请参阅 this blog post。)
虽然 readonly
字段可以是静态的或实例的(即与类型相关或与类型的实例相关),const
值始终 隐式静态(它们是编译时常量,因此每个实例都有一个副本没有意义)。
您有时可能会看到 static
被描述为“在一个类型的所有实例之间共享”——我个人不喜欢这种描述,因为它暗示必须在至少一个实例...而实际上,您不需要任何实例来使用静态成员。我更愿意将它们视为完全独立的,而不是在实例之间“共享”。
关于c# - `static` 在 C# 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410688/