c# - `static` 在 C# 中是什么意思?

标签 c# static

我对 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/

相关文章:

c# - 如何处理在 WPF (C#) 中制作带参数的窗口?

c# - ASP.NET 中的 CustomerId 和 Request.QueryString

c# - int++ 和页面加载问题

java - 比较静态类中使用的参数

c++无法将父类指针作为类型定义对静态模板成员的引用

C++静态空指针

c# - 从不同线程更改 WPF RichTextBox 中文本的颜色

c# - 如何从任意字符串生成有效的 Windows 文件名?

java - 一个只有静态方法的辅助类的声明应该是什么?

c# - 在静态类中保存对记录器的引用