C \ # 4.0 새로운 기능 dynamic, 선택 가능 한 매개 변수, 명명 매개 변수 등

3052 단어
1. dynamic Expando Object js 를 잘 아 는 친구 들 은 js 가 이렇게 쓸 수 있다 는 것 을 안다.
var t = new Object();
t.Abc = ‘something’;
t.Value = 243;

?
현재 이 js 동적 언어의 특성 은 c \ # 에서 도 사용 할 수 있 습 니 다. 전 제 는 하나의 변 수 를 Expando Object 형식 으로 설명 하 는 것 입 니 다.다음 예:
static void Main(string[] args)
{
dynamic t = new ExpandoObject();
t.Abc = "abc";
t.Value = 10000;
Console.WriteLine("t's abc = {0},t's value = {1}", t.Abc, t.Value);
Console.ReadLine();
}

C \ # 4.0 에 네 임 스페이스 System. Dynamic 을 추가 하여 이 응용 에 대한 지 지 를 실현 합 니 다. 이런 용법 의 의미 가 무엇 인지 아직 잘 모 르 겠 습 니 다. c \ # 동적 언어 로 과도 하 는 탐색 이기 도 합 니 다.
2. 범용 자동 변환
C \ # 4.0 이전에 아래 코드 는 컴 파일 할 수 없습니다.
IEnumerable<object> objs = new List<string> {
        "I'm 0","I'am 1","I'am 2"
    };

그러나 c \ # 4.0 에서 이러한 성명 은 허용 되 지만 일반적인 인터페이스 에 만 국한 되 며, 일반적인 유형의 유사 한 방법 은 허용 되 지 않 습 니 다. 다음 코드 는 컴 파일 오류 가 있 습 니 다.
List<object> objList = new List<string> { 
        "I'am 0","I'am 1","I'am 2"
    };

3. 방법 매개 변수 선택 가능 한 매개 변 수 는 다음 과 같은 방법 으로 설명 하 는 문법 입 니 다.
static void DoSomething(int notOptionalArg,string arg1 = "default Arg1",string arg2 = "default arg2") {
    Console.WriteLine("arg1 = {0},arg2 = {1}",arg1,arg2);
}

이 방법 은 세 개의 매개 변수 가 있 는데 첫 번 째 는 필수 매개 변수 이 고 두 번 째 와 세 번 째 는 선택 가능 한 매개 변수 이 며 그들 은 모두 기본 값 을 가지 고 있다.이런 형식 은 고정 매개 변수의 몇 가지 방법 을 다시 싣 는 데 매우 유용 하 다.다음 호출:
static void Main(string[] args)
{
    DoSomething(1);
    DoSomething(1,"  ");
    DoSomething(1,"  ","  ");
    Console.ReadLine();
}

만약 내 가 선택 할 수 있 는 매개 변수 방법 과 같은 방법 으로 서명 하지 않 는 방법 이 있다 면 c \ # 어떻게 처리 할 지 생각 할 수 있 습 니 다. 아래 코드 를 보 겠 습 니 다.
static void DoSomething(int notOpArg,string arg)
{
    Console.WriteLine("arg1 = {0}", arg);
}

저 는 DoSomething 이라는 방법 에 두 개의 인자 가 있 지만 선택 할 수 있 는 인자 가 없습니다. DoSomething (1, "arg") 을 호출 할 때 선택 할 수 있 는 인자 가 없 는 방법 을 우선 실행 한 다 는 것 을 증명 합 니 다.
4. 방법 매개 변수 이름 매개 변수 이름 매개 변 수 는 호출 방법 에서 매개 변수 이름 을 지정 하여 매개 변수 에 값 을 부여 할 수 있 습 니 다. 이 경우 매개 변수의 순 서 를 무시 할 수 있 습 니 다.다음 방법 설명:
static void DoSomething(int height,int width,string openerName,string scroll) {
    Console.WriteLine("height = {0},width = {1},openerName = {2}, scroll = {3}",height,width,openerName,scroll);
}

우 리 는 이렇게 위 에서 성명 한 방법 을 호출 할 수 있다.
static void Main(string[] args)
{
    DoSomething( scroll : "no",height : 10, width : 5, openerName : "windowname");
    Console.ReadLine();
}

이것 은 문법 사탕 임 이 분명 하지만 방법 적 매개 변수 가 많은 상황 에서 의미 가 있 고 코드 의 가 독성 을 증가 시 킬 수 있다.
원본 주소:http://www.cnblogs.com/yukaizhao/archive/2010/05/24/csharp-40-dynamic-optional-argument.html

좋은 웹페이지 즐겨찾기