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

时间:2015-03-06 06:00:16

标签: c# static

我的代码如下

   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();
    }

}

公共课程     {

    public static void Main()
    {

         int val=MyStaticClass.GetSomeValue;

    }
 }

O / P:

This method was called

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

3 个答案:

答案 0 :(得分:4)

调用方法CreateMe()是因为在以下语句中创建对象Instance时正在调用它。

 public static readonly MyStaticClass Instance = CreateMe();

这是您班级中的静态对象,在您访问MyStaticClass.GetSomeValue所做的课程时创建。

Dubugging the code将清楚地显示执行语句的顺序。您可以在MSDN上查看有关调试Debugger Roadmap

的详细文章

答案 1 :(得分:1)

您有一个静态初始化程序用于静态字段。作为程序启动的一部分,将评估所有静态字段。

编辑:此处有一点澄清:

特定类中的静态字段按声明顺序进行评估,但没有特定顺序,哪个类首先初始化它的静态字段。 现在,如果你有一个静态属性,那就不一样了。

MSDN link

答案 2 :(得分:0)

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