System.Array은 CLR (Common Language Runtime)의 모든 배열에 대한 기본 클래스로 사용됩니다. this article에 따르면 Get
/Set
/Address
각 콘크리트 어레이 형은.NET의 다차원 System.Array 인스턴스에 대한 Get, Set 및 Address 메서드에 대한 정보는 어디에서 찾을 수 있습니까?
[] 런타임 세 특별한 방법을 추가한다.
그리고 실제로 나는이 C# 코드, 내가 할 CIL에
int[,] x = new int[1024,1024];
x[0,0] = 1;
x[1,1] = 2;
x[2,2] = 3;
Console.WriteLine(x[0,0]);
Console.WriteLine(x[1,1]);
Console.WriteLine(x[2,2]);
, 상기 Get
및 Set
방법에 대한 호출이 명확하게 볼 수 있습니다
IL_0000: ldc.i4 0x400
IL_0005: ldc.i4 0x400
IL_000a: newobj instance void int32[0...,0...]::.ctor(int32,
int32)
IL_000f: stloc.0
IL_0010: ldloc.0
IL_0011: ldc.i4.0
IL_0012: ldc.i4.0
IL_0013: ldc.i4.1
IL_0014: call instance void int32[0...,0...]::Set(int32,
int32,
int32)
IL_0019: ldloc.0
IL_001a: ldc.i4.1
IL_001b: ldc.i4.1
IL_001c: ldc.i4.2
IL_001d: call instance void int32[0...,0...]::Set(int32,
int32,
int32)
IL_0022: ldloc.0
IL_0023: ldc.i4.2
IL_0024: ldc.i4.2
IL_0025: ldc.i4.3
IL_0026: call instance void int32[0...,0...]::Set(int32,
int32,
int32)
IL_002b: ldloc.0
IL_002c: ldc.i4.0
IL_002d: ldc.i4.0
IL_002e: call instance int32 int32[0...,0...]::Get(int32,
int32)
IL_0033: call void [mscorlib]System.Console::WriteLine(int32)
IL_0038: ldloc.0
IL_0039: ldc.i4.1
IL_003a: ldc.i4.1
IL_003b: call instance int32 int32[0...,0...]::Get(int32,
int32)
IL_0040: call void [mscorlib]System.Console::WriteLine(int32)
IL_0045: ldloc.0
IL_0046: ldc.i4.2
IL_0047: ldc.i4.2
IL_0048: call instance int32 int32[0...,0...]::Get(int32,
int32)
IL_004d: call void [mscorlib]System.Console::WriteLine(int32)
를 분해합니다. 이러한 방법의 장점은 배열의 차원과 관련이있는 것으로 보이는데, 이는 아마도 런타임에서 만들어지고 미리 선언되지 않은 이유 일 것입니다. MSDN에서 이러한 메서드에 대한 정보를 찾을 수 없으며 단순한 이름으로 인해 인터넷 검색이 어려워졌습니다. 다차원 배열을 지원하는 언어 용 컴파일러를 작성 중이므로이 메서드에 대한 공식 문서를 찾고 싶습니다. 어떤 조건에서이 메서드가 존재할 것으로 예상되는지, 그리고 해당 서명이 무엇인지 기대할 수 있습니다.
는 특히, 나는 반영하기에 올바른 유형과 차원을 가진 배열의인스턴스를 만들 필요없이 Reflection.Emit
에 사용 Get
또는 Set
에 대한 MethodInfo
객체를 얻기 위해 가능 여부를 알고 싶습니다 연결된 예에서와 같이
@Rob : 'Address' 메소드에 대한 예제가 있습니까? 그리고이 방법들이 생성된다는 사실을 설명하는 링크가 있습니까? –
@ 존 - 내 첫 단락에서 '이 기사'링크를 클릭하면 두 번째 단락의 견적을 가져 오는 기사에서 끝납니다. –