C\#익명 방법

4543 단어 C#
C\#의뢰 에 익명 방법 을 정의 할 수 있 는 메커니즘 을 제공 합 니 다.익명 방법 은 이름 이 없고 컴 파일 러 는 이름 을 지정 합 니 다.
익명 의 방법 을 사용 할 때 코드 가 빨리 실행 되 지 않 고 컴 파일 러 는 하나의 방법 을 정 의 했 습 니 다.이 방법 은 자동 으로 지정 한 이름 이 있 습 니 다.우 리 는 이 이름 을 알 필요 가 없습니다.
익명 으로 지 키 는 규칙:
(1)익명 방법 에 서 는 점프 문(break,goto 또는 continue)을 사용 하여 이 익명 방법의 외부 로 뛰 어 내 릴 수 없 으 며,반대로 익명 방법 외부의 점프 문 구 는 이 익명 방법의 내부 로 뛰 어 내 릴 수 없다.
(2)익명 방법 외부 에서 사용 하 는 ref 와 out 매개 변 수 는 접근 할 수 없 지만 익명 방법 외부 에서 정의 하 는 다른 변 수 를 사용 할 수 있 습 니 다.
예 는 다음 과 같다.
delegate string MyDelegate(string val);



var str1 = "      ";

//

MyDelegate my = delegate(string param)

{

      var str2 = "      ";

      return param + str1 + str2;

};

//          

Console.WriteLine(my("  ")); //

C\#3.0 이후 익명 방법 은 Lambda 를 사용 하여 정의 할 수 있 습 니 다.다시 말 하면 Lambda 표현 식 은 익명 방법의 또 다른 표현 형식 입 니 다.
var str1 = "      ";

var str2 = "      "; 

MyDelegate my = param => param + str1 + str2; 

Console.WriteLine(my("  ")); //

호출 과정 에서 의 협 변 과 역 변 을 위탁 하 다.
매개 변수 유형:매개 변수 유형 은 역 변 에 주의해 야 합 니 다.
               의뢰 에 전 달 된 매개 변수 유형 은 의뢰 방법의 매개 변수 유형 에 파생 될 수 있 습 니 다.
public class A { }



public class B : A { }





public delegate void MyDelegate(B b);





MyDelegate my = Method;

my(new B());





static void Method(A a)

{

       

}

반환 유형:반환 유형 은 협 변 에 주의해 야 합 니 다.
               방법의 반환 유형 은 위탁 정의 유형 에 파생 될 수 있다.
public class A { }



public class B : A { }





public delegate A MyDelegate();



MyDelegate my = Method;

my();





static B Method()

{

     return new B();

}

위 에서 보 듯 이 협 변 과 역 변 의 근본 원인 은 계승 이다.

좋은 웹페이지 즐겨찾기