c# - 静态类中的方法是如何调用的

标签 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:

调用了该方法

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

最佳答案

方法 CreateMe() 被调用,因为您在以下语句中创建对象 Instance 时调用。

 public static readonly MyStaticClass Instance = CreateMe();

这是您的类中的静态对象,是在您通过 MyStaticClass.GetSomeValue 访问该类时创建的。

Dubugging the code将使您清楚地了解语句的执行顺序。您可以阅读 MSDN 上有关调试的详细文章 Debugger Roadmap

关于c# - 静态类中的方法是如何调用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28893149/

相关文章:

java - 通过类定义使用 "this"?

c# - 当 TimeZoneInfo.ConvertTimeToUtc 对于某些 DateTime 值时调用异常

c# - 如何使用 C# 将具有属性长度的 xml 空元素标记转换为开始标记和结束标记?

c# - 有没有办法让它看起来像 foreach 看起来返回一个值?

c++ - 静态成员变量的构造函数和析构函数(指针)

delphi - TApplicationEvents 作为动态组件或静态组件用于跟踪在 Delphi 中调用的例程

C++:不能调用没有对象的成员函数

python - 如何使用静态方法初始化静态变量?

c# - Entity Framework 4.3 with MVC on Edit 不保存复杂对象

c# - 如何在 C# 中使用带有 Xamarin 或 Dot42 的 async/await 实现 Android 回调?