OpCodes.Newobj 필드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
새 개체 또는 값 형식의 새 인스턴스를 만들어 개체 참조(형식 O)를 평가 스택에 푸시합니다.
public: static initonly System::Reflection::Emit::OpCode Newobj;
public static readonly System.Reflection.Emit.OpCode Newobj;
staticval mutable Newobj : System.Reflection.Emit.OpCode
Public Shared ReadOnly Newobj As OpCode
필드 값
설명
다음 표에서는 간단한 참조 요약과 함께 명령의 16진수 및 MSIL(Microsoft Intermediate Language) 어셈블리 형식을 나열합니다.
| 포맷 | 어셈블리 형식 | Description |
|---|---|---|
73 <T> |
newobj ctor |
초기화되지 않은 개체 또는 값 형식을 할당하고 생성자 메서드 ctor를 호출합니다. |
순차적으로 스택 전환 동작은 다음과 같습니다.
arg1인수argn는 스택에서 순서대로 푸시됩니다.인수
argn를 통해arg1스택에서 팝되고 개체 생성을 위해ctor전달됩니다.새 개체에 대한 참조가 스택에 푸시됩니다.
이 newobj 명령은 새 개체 또는 값 형식의 새 인스턴스를 만듭니다.
Ctor 는 호출할 생성자의 이름, 클래스 및 서명을 나타내는 메타데이터 토큰( methodref 또는 methoddef 생성자로 표시되어야 하는 토큰)입니다.
이 newobj 명령은 연결된 ctor 클래스의 새 인스턴스를 할당하고 새 인스턴스의 모든 필드를 적절한 형식의 0 또는 null 참조로 적절하게 초기화합니다. 그런 다음, 새로 만든 인스턴스와 함께 지정된 인수를 사용하여 생성자를 ctor 호출합니다. 생성자가 호출된 후 이제 초기화된 개체 참조(형식 O)가 스택에 푸시됩니다.
생성자의 관점에서 초기화되지 않은 개체는 인수 0이고 newobj에 전달된 다른 인수는 순서대로 따릅니다.
모든 0부터 시작하는 1차원 배열은 .가 아니라 Newarr사용하여 newobj만들어집니다. 반면에 다른 모든 배열(둘 이상의 차원 또는 1차원이지만 0부터 시작하지 않음)은 사용하여 newobj만들어집니다.
값 형식은 일반적으로 .를 사용하여 newobj만들어지지 않습니다. 일반적으로 인수 또는 지역 변수로 할당됩니다( 0부터 시작하는 1차원 배열의 경우) 또는 개체 필드로 사용합니다 newarr . 할당된 후에는 .를 사용하여 Initobj초기화됩니다. 그러나 newobj 명령을 사용하여 스택에 값 형식의 새 인스턴스를 만들 수 있습니다. 이 인스턴스는 인수로 전달되고 로컬에 저장될 수 있습니다.
OutOfMemoryException 는 요청을 충족할 메모리가 부족한 경우 throw됩니다.
MissingMethodException 지정된 이름, 클래스 및 서명을 가진 생성자 메서드 ctor 를 찾을 수 없는 경우 throw됩니다. 일반적으로 MSIL(Microsoft Intermediate Language) 명령이 런타임이 아닌 네이티브 코드로 변환될 때 검색됩니다.
다음 Emit 메서드 오버로드는 opcode를 newobj 사용할 수 있습니다.