c# - 静态构造函数不适用于结构

标签 c# visual-studio visual-studio-2015 static-constructor c#-6.0

环境:C#6,Visual Studio 2015 CTP 6

给定以下示例:

namespace StaticCTOR
{
  struct SavingsAccount
  {
      // static members

      public static double currInterestRate = 0.04;

      static SavingsAccount()
      {
          currInterestRate = 0.06;
          Console.WriteLine("static ctor of SavingsAccount");
      }
      //

      public double Balance;
  }

  class Program
  {
      static void Main(string[] args)
      {
          SavingsAccount s1 = new SavingsAccount();

          s1.Balance = 10000;

          Console.WriteLine("The balance of my account is \{s1.Balance}");

          Console.ReadKey();
      }
  }

静态构造器由于某种原因没有被执行。如果我将 SavingsAccount 声明为类而不是结构,它就可以正常工作。

最佳答案

静态构造函数未执行,因为您没有使用该结构的任何静态成员。

如果使用静态成员currInterestRate,则首先调用静态构造函数:

Console.WriteLine(SavingsAccount.currInterestRate);

输出:

static ctor of SavingsAccount
0,06

当您使用一个类时,静态构造函数将在创建实例之前被调用。为结构调用构造函数不会创建实例,因此不会触发静态构造函数。

关于c# - 静态构造函数不适用于结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833312/

相关文章:

c# - 带有 MarkupExtension 的 IValueConverter

visual-studio - 如何使用序列在 F# 中创建无限集的幂集(组合)?

c# - 下载文件后如何从 azure blob 存储中删除文件

visual-studio - VS2010 回收 IIS 应用程序池时出错 : Not Found

c++ - 使用正则表达式在 visual studio 中选择由双换行符分隔的文本 block

javascript - Cordova 和 Windows 10 Javascript 应用程序有什么区别?

visual-studio - 如何在 Visual Studio 的解决方案资源管理器中安排项目顺序

c# - 在 VS2015 中以 .Net 4.5 为目标,但我可以使用 C# 6 功能吗?

c# - 我如何实现这个公共(public)可访问枚举

c# - 同一进程中加载​​的两个 .NET CLR 如何相互通信?