C# 如何在静态类中调用该方法

C# 如何在静态类中调用该方法,c#,static,C#,Static,我的代码如下 class MyStaticClass { static MyStaticClass{}; public static readonly MyStaticClass Instance = CreateMe(); public static int GetSomeValue = GetValue(); private static int GetValue() { return 0; } p

我的代码如下

   class MyStaticClass
   {

     static MyStaticClass{};

    public static readonly MyStaticClass Instance = CreateMe();
    public static int GetSomeValue = GetValue();

    private static int GetValue()
    {
        return 0;
    }

    private static MyStaticClass CreateMe()
    {
        Console.WriteLine("This method was called");
        return new MyStaticClass();
    }

}
公共课程 {

O/p:

此方法被称为

当我调用
val
时,调试器为什么要访问
CreateMe
方法?我访问的任何静态方法都会访问类中的所有静态方法吗?

调用方法
CreateMe()

 public static readonly MyStaticClass Instance = CreateMe();
这是类中的静态对象,在您访问由
MyStaticClass.GetSomeValue
创建的类时创建


将为您提供执行语句的顺序的清晰视图。您可以阅读MSDN上有关调试的这篇详细文章。

您有一个静态字段的静态初始值设定项。作为程序启动的一部分,将对所有静态字段进行评估

编辑:此处的小说明:

特定类中的静态字段是按声明顺序计算的,但没有特定的顺序将其静态字段先初始化到哪个类。 现在,如果你有一个静态属性,那就不同了


这两个字段都已使用静态方法初始化。因此,在这种情况下,将对所有静态方法进行求值。

您的意思是当我键入
MyStaticClass时。GetSomeValue
关键字
MyStaticClass
将调用实例?不是关键字,而是访问类MyStaticClass。这可能是由于访问e static属性或方法等。好的,那么除了“instance”之外,我访问的任何方法在默认情况下都将初始化所有静态方法?静态方法不是隐式调用的,而是在创建名为instance的对象时显式调用的。当您通过c访问any成员时,所有静态数据成员都将初始化/实例化lass.
所有静态字段都不会按特定顺序进行计算
+1顺序不是随机的。链接中的第一句话说它是按文本顺序进行的。因此,首先是
实例
,然后是
GetSomeValue
和静态构造函数。问题的标题需要修改,因为questi下的代码中没有静态类在…上
 public static readonly MyStaticClass Instance = CreateMe();