원칙적으로:
1. 위임의 본질은 포인터, 즉 함수 포인터입니다. 함수의 첫 번째 주소를 얻으세요.
C#의 위임은 반환 값, 매개 변수 유형, 매개 변수 수 등 함수 포인터가 참조하는 함수 명령 블록의 유형 감지에 반영되는 보안을 추가합니다.
C에서 함수 포인터에 값이 할당되면(C#에서는 C# 백엔드가 대리자를 클래스로 처리하고 캡슐화하므로 대리자가 인스턴스화되는 경우) 할당된 값이 형식의 다양한 조건을 충족하는지 여부(반환 값 , 매개변수 유형, 매개변수 개수)은 확인하지 않고 사용자가 보증을 제공하며 C#에서는 이를 컴파일하고 프롬프트합니다.
2. 델리게이트 인스턴스화 과정, 즉 델리게이트 객체를 생성하는 과정은 기존 함수 코드 명령어 블록(인스턴스의 정적 함수, 비정적 멤버 함수)의 메모리 주소를 델리게이트에 할당하는 과정이다. 할당 과정은 위임된 생성자가 하는 일이므로 위임된 생성자에는 매개변수가 있어야 합니다. 이 매개변수는 시스템이 백그라운드에서 처리하는데, 이는 유형 검사를 만족하는 함수 포인터이며, 확인할 유형(반환값)입니다. , 매개변수 유형, 매개변수 개수)은 대리자를 선언하고 정의할 때 모두 제공됩니다.
3. 위임 인스턴스화의 두 가지 방법:
1) A a = new A (정적 메소드 이름/인스턴스. 메소드 이름);
2) A a = 정적 메소드 이름/instance.method 이름;
대리인이 호출하는 두 가지 메서드:
1) a.호출()
2)아()
대리자를 생성하는 데 사용되는 메서드는 정적 메서드이거나 인스턴스화된 개체의 멤버 함수일 수 있습니다. 핵심은 이 코드 명령이 컴파일되고, 메모리가 할당되고, 매개 변수가 대리자(본질적으로 헤더)에 전달된다는 것입니다. 이 명령어 데이터) 주소)가 유효하고 의미가 있다는 점에서 자연 정적 메서드와 인스턴스 메서드를 사용하여 대리자 인스턴스를 생성할 수 있습니다.