C#의 상속 클래스에서 static constructor 호출 문제

3886 단어 Constructor
Eric Lippert는 static constructor에 관한 일련의 글을 썼다.1,2,3,4,static constructor에 대한 이해를 읽을 수 있다.
그중의 예를 들어 다음과 같은 코드가 있다고 가정해 보세요.
using System;
class B
{
  static B() { Console.WriteLine("B cctor"); }
  public B() { Console.WriteLine("B ctor"); }
  public static void M() { Console.WriteLine("B.M"); }
}
class D : B
{
  static D() { Console.WriteLine("D cctor"); }
  public D() { Console.WriteLine("D ctor"); }
  public static void N() { Console.WriteLine("D.N"); }
}
class P 
{
  static void Main()
  {
    System.Console.WriteLine("Main");
    new D();
  }  
}

만약main 함수가 이렇다면,
static void Main() 
{
  D.M();
}

어느 static constructor가 바뀔까요?
답은 B만 옮겨진다는 거예요.
만약main 함수가 이렇다면,
static void Main() 
{
  D.N();
}

어느 static constructor가 바뀔까요?
답은 D만 옮겨진다는 거예요.
좀 의외인 거 아니야:)

좋은 웹페이지 즐겨찾기