C# 为什么从另一个类访问静态int时总是0

C# 为什么从另一个类访问静态int时总是0,c#,static,int,C#,Static,Int,我有一个静态int的类。我希望int,一旦设置好,就可以在程序中的任何地方访问 public class MyClass { public static int myInt; public MyClass() { myInt = 100; new TestClass(); } static void Main(string[] args) { new MyClass(); } } …但是当我在另一节课上尝试调用它时

我有一个静态
int
的类。我希望
int
,一旦设置好,就可以在程序中的任何地方访问

public class MyClass
{
   public static int myInt;
   public MyClass()
   {
      myInt = 100;
      new TestClass();
   }

   static void Main(string[] args)
   {
      new MyClass();
   }
}
…但是当我在另一节课上尝试调用它时

public class TestClass
{
   public TestClass()
   {
      int testInt = MyClass.myInt;
   }
}
..
testInt
始终为0,即使我在调试模式下检查并看到静态int已成功设置


我做错了什么?

您从未实例化该类的实例。。。所以构造函数永远不会被解雇

您需要的是一个静态构造函数。。要初始化静态成员,请执行以下操作:

public class MyClass {
    public static int myInt;

    static MyClass() { // Static Constructor
        myInt = 100;
    }
}

静态构造函数保证在访问对象之前被激发。确切的时间是不确定的。

您从未实例化该类的实例。。。所以构造函数永远不会被解雇

您需要的是一个静态构造函数。。要初始化静态成员,请执行以下操作:

public class MyClass {
    public static int myInt;

    static MyClass() { // Static Constructor
        myInt = 100;
    }
}

静态构造函数保证在访问对象之前被激发。确切的时间是不确定的。

正如@Simon Whitehead所建议的,或者最好的方法是在声明时初始化它。所以你可以这样写:

public static int myInt = 100;

因为这不依赖于其他任何东西,所以您不需要等待构造函数。

正如@Simon Whitehead所建议的,或者最好的方法是在声明时初始化它。所以你可以这样写:

public static int myInt = 100;

因为这不依赖于任何其他内容,所以不需要等待构造函数。

我看不出OP中有任何问题,因为代码确实完成了预期的任务:


尝试添加
Console.WriteLine(testInt)
TestClass
构造函数的末尾。如果代码与发布的代码相等,它应该输出
100

我看不出OP中有任何问题,因为代码确实完成了预期的工作:


尝试添加
Console.WriteLine(testInt)
TestClass
构造函数的末尾。如果代码等于发布的代码,它应该输出
100

@Grantwiney他没有说它被断点击中,他可能只是在调试器中检查变量的值,发现它是0。@Simon Whitehead,他确实实例化了
MyClass
@Grantwiney的一个实例他没有说它被断点击中,他可能只是在调试器中检查了变量的值,发现它是0。@Simon Whitehead,他确实实例化了
MyClass
的一个实例,实际上发布的代码是有效的,因为
MyClass
实例构造函数是在
static void Main(string[]args)
中调用的;而
TestClass
构造函数是在
myInt
被赋值为
100
后调用的,
testInt
在上述代码中不能
0
,它肯定是
100
…问题可能隐藏在OP检查它是
0
的方式中。实际上,发布的代码确实有效,因为
MyClass
实例构造函数是在
静态void Main(string[]args)
中调用的;而
TestClass
构造函数是在
myInt
被赋值为
100
后被调用的。因此
testInt
在上述代码中不能
0
,它肯定是
100
。问题可能隐藏在OP检查它是
0
的方式中。