在引用任何静态成员之前调用静态构造函数

2024-01-14

根据文档:

静态构造函数用于初始化任何静态数据,或执行只需执行一次的特定操作。它被自动调用before创建第一个实例或引用任何静态成员.

但我在 stackoverflow 帖子中看到了以下来自 C# 规范的引用:

如果类中存在静态构造函数(第 10.12 节),则立即执行静态字段初始值设定项prior执行该静态构造函数。

这是矛盾的,我不明白静态构造函数和静态成员初始化哪个先出现。


考虑这个类:

public static class TestStatic
{
    public static int SomeValue = GetValue();

    static TestStatic()
    {
        Console.WriteLine("Constructor");
    }

}

还有这个支撑方法:

public static int GetValue()
{
    Console.WriteLine("GetValue");
    return 5;
}

如果您运行此代码:

Console.WriteLine(TestStatic.SomeValue);

您将得到的输出是:

GetValue
Constructor
5

所以你可以看到你发布的两种说法都是正确的。构造函数在静态成员之前调用(SomeValue) 被引用,并且静态字段初始值设定项在构造函数之前被调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在引用任何静态成员之前调用静态构造函数 的相关文章

随机推荐

  • 自定义 MapHttpAttributeRoutes 以进行 Web Api 版本控制

    我正在实施 Web API 版本控制 如下所示Web API 版本控制 http www codeproject com Articles 741326 Introduction to Web API Versioning 我的控制器位于
  • 网站部署后需要强制刷新

    部署新版本的网站后 浏览器会从旧网页的缓存中加载所有内容 直到强制刷新完成 图像是旧的 cookie 是旧的 并且一些 AJAX 部分无法工作 部署后我应该如何继续为用户提供最新版本的页面 该网页是使用IIS7 的ASP Net网页 您可以
  • 可靠地检测用户是否在网页上使用鼠标?

    在我们的页面上 我们有一些长水平滚动的 iframe div 如果用户使用鼠标 他们可以使用滚动条滚动 我们希望他们能够选择 iframe 中的文本 但是 如果他们仅使用触摸 则滚动条会很麻烦 我想在整个事物上覆盖一个透明元素 以使他们能够
  • 如何在 PostgreSQL 中生成虚拟表来生成日期序列?

    我想生成一个日期列表 希望与另一个表连接 但我不知道要使用什么语法 类似于 SELECT dates date transactions account id transactions amount FROM as dates LEFT J
  • 订票系统:数据库访问问题

    我正在创建一个巴士票预订系统 我创建了一个名为 Traveler 的数据库和两个分别名为 Useriden 和 BusDB 的表 在 aspx cs 文件 注册页面 中 我正在检查重复的用户名 但它只是导航到下一页 我已经尝试了一切 但无法
  • Rails 中的composed_of - 何时使用它?

    什么时候应该使用 ActiveRecordcomposed of http apidock com rails ActiveRecord Aggregations ClassMethods composed of类方法 就我个人而言 我认为
  • 将Java程序运行到另一个程序中[重复]

    这个问题在这里已经有答案了 可能的重复 在java程序中执行另一个jar https stackoverflow com questions 1320476 execute another jar in a java program 我尝试
  • 是否可以以编程方式向场景添加行?

    我想在每个 SpecFlow 测试的开头添加相同的行 这一行指定了几个场景的列表 这些场景会随着时间的推移而改变 因此为每个测试维护这个列表是不可行的 例如 Given I have set my site theme to
  • 发送用户 ID 和 access_token

    我正在使用 React 前端在 ASP NET Core 2 1 应用程序中实现 Auth0 一旦用户进行身份验证 我就会得到access token and an id token 我的目的很明确access token是授予对我的 AP
  • Chef-solo 从 bash 脚本获取日志

    我正在通过 Chef 执行 shell 脚本 如下所示 execute Run postgres data migration do command home ubuntu build target infra base psql10 mi
  • 单一职责原则有什么用?

    我试图理解单一职责原则 但我很难理解这个概念 我正在阅读 Lucian Paul Torje Adrian Ianculescu Kamalmeet Singh 所著的 Java 设计模式和最佳实践 一书 在这本书中我正在阅读单一职责原则章
  • Webpack 不排除 node_modules

    我正在使用 webpack 作为我正在构建的 Node 框架 尽管我应该承认 我应该使用 gulp 当我包含 EJS 模块时 webpack 将其包含在编译的源代码中 即使我明确告诉它排除 node modules 目录 module ex
  • 创建一个常量但本地的数组

    有时我需要针对单个方法的硬编码查找表 我也可以创建这样一个数组 在方法本身本地 类内静态 第一种情况的示例 public int Convert int i int lookup new 1 2 4 8 16 32 666 return l
  • gradle远程调试流程

    我正在添加GRADLE OPTS系统环境变量为 Xdebug Xrunjdwp transport dt socket server y suspend y address 5005 我已经从 IntelliJ IDEA 为此套接字创建了远
  • 如何修复错误“反编译的 .class 文件字节码版本 52.0 (Java 8)

    当我在模拟器上测试我的应用程序时 它工作正常 但是当我在真正的 android 10 0 版本 手机上运行该应用程序时 log cat 显示我根本无法理解的错误 这是非常令人困惑的 因为它在一部手机 较低版本 上运行良好 但在另一部手机 A
  • 如何在heroku cedar堆栈上使用virtualenv进行pip卸载?

    我尝试使用以下命令卸载 heroku 上的模块 heroku run bin python bin pip 卸载任何东西 Pip 在 app 树中显示该模块 然后声称已卸载该模块 但再次运行相同的命令显示它安装在 app 树中的同一位置 有
  • OpenLayers 通过 Popups 窃取点击事件

    为什么 FramedCloud 弹出窗口会窃取弹出窗口内的点击事件 current popup new OpenLayers Popup FramedCloud featurePopup f geometry getBounds getCe
  • Maven Surefire 测试插件运行测试,即使它们被排除:

    我排除插件中除我的测试套件之外的所有测试
  • 想要使用Excel VBA选择网站上的按钮

    我想使用 Excel 来浏览网页 但该网站不像普通网站 亚马逊 谷歌等 那样使用 ID 该网站是http www scoopmae com http www scoopmae com 我如何选择 预订演示 按钮 我通常会使用 getelem
  • 在引用任何静态成员之前调用静态构造函数

    根据文档 静态构造函数用于初始化任何静态数据 或执行只需执行一次的特定操作 它被自动调用before创建第一个实例或引用任何静态成员 但我在 stackoverflow 帖子中看到了以下来自 C 规范的引用 如果类中存在静态构造函数 第 1