C\#4.0 입문 제1장 dynamic 유형-첫 페이지 dynamic 유형(

3279 단어 dynamic
■다이나믹 타 입
C\#1.0 버 전부터 한 대상 의 유형 을 모 르 더 라 도 컴 파일 할 때 이 대상 의 정 보 를 동적 으로 방문 할 수 있 습 니 다.반사 만 사용 하면 돼.
방문 대상 의 구성원 정 보 를 반사 적 으로 사용 합 니 다.
 
class A
{
public readonly string MyName = " ";
public static object GetObjectA() { return new A(); }
}
class Program
{
static void Main(string[] args)
{
object a = A.GetObjectA();
var name = a.GetType().GetField("MyName").GetValue(a);
Console.WriteLine(name);
}
}

상례 의 집행 결과
    

보시 다시 피 Main 방법 에 서 는 GetObjectA 방법 에서 어떤 유형의 대상 을 되 돌 렸 는 지 모 르 고 반사 기능 을 이용 하여 대상 의 필드 값 을 되 돌 릴 수 있 습 니 다.이른바'동적'처리 라 는 것 이다.
C\#4.0 에서 dynamic 형식 을 가 져 와 이 조작 을 대폭 간소화 할 수 있 습 니 다.
dynamic 형식 으로 대상 에 접근 하 는 구성원 정보 사용
 
using System;
class A
{
public readonly string MyName = " ";
public static dynamic GetObjectA() { return new A(); }
}

class Program
{
static void Main(string[] args)
{
dynamic a = A.GetObjectA();
Console.WriteLine(a.MyName);
}
}

물론 Main 에 서 는 GetObjectA 방법 이 되 돌아 오 는 대상 이 A 형식 인 지 는 모 르 지만 MyName 필드 의 값 을 얻 을 수 있 습 니 다.이름 만 일치 하면 방문 이 가능 해 반사 중인 접근 기능 과 동일 하기 때문이다.이름 이 일치 하 는 지 여 부 는 컴 파일 할 때 검사 하 는 것 이 아니 라 실행 할 때 검사 하 는 것 이기 때문이다.일치 하지 않 더 라 도 컴 파일 시 오류 가 아니 라 실행 중 이상 을 던 집 니 다.또한,실행 할 때 주어진 이름과 같은 멤버 를 찾 아야 하기 때문에 운행 속도 가 지연 된다.■다이나믹 타 입 을 일괄 호출 하 는 특징 중 하 나 는 대상 의 타 입 을 모 르 더 라 도 대상 에 접근 할 수 있 지만,어떤 경우 에는 대상 의 타 입 을 알 더 라 도 다이나믹 타 입 을 통 해 접근 해 야 한 다 는 것 이다.
다음 예 는 두 가지'새'류 의 정의 로 이 두 가지 유형 은 계승 관계 가 없고 완전히 독립 적 으로 존재 한다.이런 상황 에서 일반적인 방법 으로 는 그것들 중의 어떤 방법 을 통일 적 으로 호출 할 수 없다.따로 포장 할 수 있 더 라 도 서로 다른 유형 에 대해 따로 호출 해 야 한다.이처럼 상속 관계 가 없 는 두 개의 클래스 를 통일 적 으로 호출 하 는 것 은 불가능 하기 때문이다.그러나 이 제 는 dynamic 형식 을 통 해 이름,파라미터 와 유형 이 일치 하면 통일 적 으로 호출 할 수 있 습 니 다.다음 예 에 서 는 통일 적 인 울 음소 리 방법 에서 두 가지 유형 중 같은 방법 을 집중 적 으로 사용 했다.
다이나믹 형식 으로 접근
 
using System;
class
{
public void ()
{
Console.WriteLine(" !");
}
}

class
{
public void ()
{
Console.WriteLine(" ");
}
}

class Program
{
private static void (dynamic )
{
. ();
}

static void Main(string[] args)
{
((dynamic)new ());
((dynamic)new ());
}
}

상례 의 집행 결과

좋은 웹페이지 즐겨찾기