클래스 에서 정적 구조 함수 에 대한 실행 순서
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 가 되 었 다.
위 에 약간 돌아 있 을 수 있 습 니 다.사실은 실행 순 서 는 클래스 의 정적 구성원 을 초기 화한 다음 에 실행 클래스 의 정적 구조 함수,실행 순서:클래스 의 정적 구성원>클래스 의 정적 구조 함수 입 니 다.
위 에서 부터 정적 구조 함수 에 대한 이해
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
구조 함수를 빌려 비원형을 계승하다Object {tag: Array[3]} tag: Array[3] 0: "js" 1: "html" 2: "aa" length: 3 __proto__: Array[0] __proto__: Article construc...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.