클래스 에서 정적 구조 함수 에 대한 실행 순서

2241 단어 구조 함수
방금 정적 클래스 의 정적 구조 함 수 를 사 용 했 습 니 다.잘 모 르 는 부분 이 있 습 니 다.그래서 구 글 은 글 을 보고 자신의 정 리 를 보 냈 습 니 다.
  구 글 의 취 지 는 바로 이것 때문이다.
클래스 에서 구성원 을 초기 화 하 는 것 은 도대체 클래스 의 정적 구조 함수 에서 초기 화 하 는 것 입 니까?
   아니면 최종 건 의 를 먼저 보 여 주 는 것 이 좋 겠 습 니까?
첫 번 째 는 간단 한 정적 구성원 이다.예 를 들 어 유형 은 값 유형 등 이 고 구성원 초기 화 문 구 를 사용 하여 완성 한다.
두 번 째 정적 구성원 의 초기 화 는 비교적 복잡 하거나 이상 이 발생 할 수 있 으 므 로 정적 구조 함수 로 완성 합 니 다.
   다음은 인터넷 에서 찾 은 예 입 니 다.주로 정적 구조 함수 의 집행 순 서 를 잘 알 고 있 습 니 다.
    
static class A
{
public static int X = B.Y;
static A()
{
++X;
}
}

static class B
{
public static int Y = A.X;
static B()
{
++Y;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(A.X);
Console.WriteLine(B.Y);
Console.Read();
}
}

뜸 들 이지 않 고 집행 결 과 를 먼저 말 하 다.
2
1
다음 과 같이 설명 한다.먼저 Console.WriteLine(A.X)을 실행 하면 클래스 A 로 넘 어 갑 니 다.멤버 X 를 호출 하여 X 에 공간 을 분배 하고 0 으로 초기 화 했 기 때문에 X=B.Y 라 는 말 을 실행 합 니 다.실행 할 때 클래스 B 로 넘 어 갑 니 다.먼저 멤버 Y 를 초기 화하 고 0 으로 초기 화 했 습 니 다.Y=A.X 를 계속 실행 합 니 다.A.X 가 0 으로 초기 화 되 었 기 때 문 입 니 다.그래서 직접 Y=0,이어서 클래스 B 의 정적 구조 함 수 를 집행 했다.그래서 Y 는 1 이 되 었 고 실행 이 끝 난 후에 X=B.Y 라 는 문장 에서 B.Y=1 이 라 고 생각 했다.그래서 X=1,그리고 A 류 의 정적 구조 함 수 를 집행 했다.그래서 A.X=2 가 되 었 다.
  위 에 약간 돌아 있 을 수 있 습 니 다.사실은 실행 순 서 는 클래스 의 정적 구성원 을 초기 화한 다음 에 실행 클래스 의 정적 구조 함수,실행 순서:클래스 의 정적 구성원>클래스 의 정적 구조 함수 입 니 다.
  위 에서 부터 정적 구조 함수 에 대한 이해

좋은 웹페이지 즐겨찾기