C\#dynamic 키워드 사용 방법
static void Main()
{
object target = " ";
object arg = " string ";
Type[] argtype = new Type[] { arg.GetType()};
System.Reflection.MethodInfo method = target.GetType().GetMethod("Contains", argtype);
object[] argm = new object[] { arg};
Boolean result=Convert.ToBoolean(method.Invoke(target,argm));
}
이제 dynamic!
static void Main()
{
dynamic target = " ";
dynamic arg = " ";
Boolean result = target.Contains(arg);
}
현저 한 간소화 가 발견 되 었 습 니까?4567913)다이나믹 의 신기 함 을 보 았 으 니 다시 한 번 꼬치 꼬치 캐 어 봅 시다.필드,속성/색인 기,방법,의뢰,1 원/2 원/변환 연산 자 등 다이나믹 표현 식 이나 변 수 를 사용 하여 구성원 을 호출 할 수 있 습 니 다.코드 가 다이나믹 표현 식 이나 변 수 를 사용 하여 구성원 을 호출 할 때 컴 파일 러 는 특수 한 IL 코드 를 생 성하 여 필요 한 동작 을 설명 합 니 다.이 특수 한 코드 는 payload(유효 부하)라 고 합 니 다.이 예 를 들 어
static void Main()
{
Application excel = new Application();
excel.Visible = true;
excel.Workbooks.Add(Type.Missing);
((Range)excel.Cells[1, 1]).Value = https://www.jb51.net/smailxiaobai/archive/2011/11/25/" ";// dynamic ,excel.Cells[1,1] objec , Rang Value 。
excel.Cells[1, 1].Value = https://www.jb51.net/smailxiaobai/archive/2011/11/25/" ";// COM “ ” ,COM variant dynamic, (dynamicfication)。
// excel.Cells[1,1] dynamic , Range Value。 COM 。
}
필드 형식,방법 매개 변수 유형 이나 방법 유형 이 다이나믹 으로 지정 되 는 전제 에서 컴 파일 러 는 이 유형 을 System.Object 로 바 꾸 고 메타 데이터 에서 필드,매개 변수 또는 형식 으로 System.Runtime.Compiler Sevices.Dynamic Attribute 의 인 스 턴 스 를 되 돌려 줍 니 다.부분 변수 가 dynamic 로 지정 되면 변수 유형 도 Object 가 되 지만 부분 변수 에 Dynamic Attribute 를 적용 하지 않 고 사용 을 방법 으로 제한 해 야 합 니 다.다이나믹 은 object 이기 때문에 다이나믹 을 object 로 만 들 거나 object 를 다이나믹 으로 만 들 면 두 가지 다른 방법 으로 서명 할 수 있 습 니 다.예:
static void Main()
{
for (int i = 0; i < 2; i++)
{
dynamic arg = (i == 0) ? (dynamic)10 : "A";
dynamic result = plus(arg);// i==0 ,arg=10; plus , int 。 string 。
M(result);//payload M , 。
}
Console.ReadKey();
}
static dynamic plus(dynamic arg) { return arg+arg;}
static void M(int n) { Console.WriteLine("M(int):{0}", n); }
static void M(string s) { Console.WriteLine("M(string):{0}", s); }
}
이것 은 번역 에 통 하지 않 는 다.dynam 의 유형 변환:
object dd(dynamic i) { return i; }
dynamic dd( object i) {return i; }
dynamic 과 var 의 차이 점:1.var 는 부분 변 수 는 간단 한 문법 일 뿐 컴 파일 러 가 표현 식 에 따라 구체 적 인 데이터 형식 을 추정 하도록 요구 합 니 다.2.var 는 설명 방법 내부 의 부분 변수 에 만 사용 할 수 있 고 다이나믹 은 부분 변수,필드,매개 변수 에 사용 할 수 있 습 니 다.3.표현 식 은 var 로 바 꿀 수 없 지만 다이나믹 으로 바 꿀 수 있 습 니 다.4.var 로 설명 하 는 변 수 를 명시 적 으로 초기 화 해 야 하지만 dynam 으로 설명 하 는 변 수 를 초기 화 할 필요 가 없습니다.dynamic 를 사용 할 때 주의해 야 합 니 다.실행 할 때 Microsoft.상어 p.dll 은 AppDomain 에 불 러 와 야 합 니 다.이번 에는 프로그램의 성능 을 손상 시 키 고 내부 오류 소 모 를 증가 시 킵 니 다.Microsoft.상어 p.dll 은 System.dll 과 System.Core.dll 을 불 러 옵 니 다.dynamic 를 사용 하면 System.dynamic.dll 을 불 러 옵 니 다.payload 코드 가 실 행 될 때 동적 코드 를 생 성 합 니 다.이 코드 들 은 메모리 에 있 는 프로그램 집합 에 들 어 갑 니 다."익명 하 숙 된 DynamicMethods 프로그램 집합"(Anonymously Hosted DynamicMethods Assembly)이 라 고 합 니 다.같은 런 타임 형식의 dynamic 실 참 을 사용 하여 대량의 호출 을 보 냈 을 때 이 코드 는 스케줄 링 성능 을 향상 시 킬 수 있 습 니 다.dynamic 는 문법 을 간소화 할 수 있 지만 동적 값 구하 기 기능 이 발생 하 는 추가 비용 도 무시 할 수 없다.왜냐하면 모든 프로그램 집합 과 추가 메모리 소 모 를 불 러 오 면 성능 에 추가 적 인 영향 을 미 칠 수 있 기 때문이다.프로그램 에서 한두 군데 만 동태 적 인 행동 이 필요 하 다 면 전통 적 인 방법 이 더욱 효율 적일 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
API의 데이터가 포함된 Nuxt 2 동적 사이트맵일부 데이터 세트/api에서 사이트맵을 동적으로 구축하려는 경우 이것이 적합합니다. nuxt 프로젝트에서 익스프레스 API를 활성화했는지 여부에 관계없이 이 쉬운 3단계 프로세스를 통해 원하는 결과를 얻을 수 있습니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.