OpCodes.Newobj 필드

정의

개체 참조(O 형식)를 계산 스택으로 푸시하여 값 형식의 새 개체나 새 인스턴스를 만듭니다.Creates a new object or a new instance of a value type, pushing an object reference (type O) onto the evaluation stack.

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 

필드 값

OpCode

설명

다음 표에서 명령의 16 진수 및 간략 한 참조 요약 정보와 함께 언어 MSIL (Microsoft Intermediate) 어셈블리 형식:The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

서식Format 어셈블리 형식Assembly Format 설명Description
73 < T >73 < T > newobj ctornewobj ctor 초기화 되지 않은 개체 또는 값 형식을 할당 하 고 ctor생성자 메서드를 호출 합니다.Allocates an uninitialized object or value type and calls the constructor method ctor.

스택 전환 동작에 순차적으로 다음과 같습니다.The stack transitional behavior, in sequential order, is:

  1. argn를 통해 arg1 인수는 순서 대로 스택에 푸시됩니다.Arguments arg1 through argn are pushed on the stack in sequence.

  2. arg1를 통해 argn 인수는 스택에서 팝 되 고 개체를 만들기 위해 ctor에 전달 됩니다.Arguments argn through arg1 are popped from the stack and passed to ctor for object creation.

  3. 새 개체에 대 한 참조를 스택으로 푸시됩니다.A reference to the new object is pushed onto the stack.

newobj 명령은 새 개체 또는 값 형식의 새 인스턴스를 만듭니다.The newobj instruction creates a new object or a new instance of a value type. Ctor는 호출할 생성자의 이름, 클래스 및 시그니처를 나타내는 메타 데이터 토큰 (생성자로 표시 되어야 하는 methodref 또는 methoddef)입니다.Ctor is a metadata token (a methodref or methoddef that must be marked as a constructor) that indicates the name, class and signature of the constructor to call.

newobj 명령은 ctor와 연결 된 클래스의 새 인스턴스를 할당 하 고 새 인스턴스의 모든 필드를 적절 한 형식의 0 또는 null 참조로 초기화 합니다.The newobj instruction allocates a new instance of the class associated with ctor and initializes all the fields in the new instance to 0 (of the proper type) or null references as appropriate. 그런 다음, 지정 된 인수를 사용 하 여 새로 만든 인스턴스와 함께 ctor 생성자를 호출 합니다.It then calls the constructor ctor with the given arguments along with the newly created instance. 생성자가 호출 되 면 이제 초기화 된 개체 참조 (형식 O)가 스택에 푸시됩니다.After the constructor has been called, the now initialized object reference (type O) is pushed on the stack.

생성자의 관점에서 초기화 되지 않은 개체는 인수 0 및 newobj 전달 되는 다른 인수를 순서 대로 수행 합니다.From the constructor's point of view, the uninitialized object is argument 0 and the other arguments passed to newobj follow in order.

0부터 시작 하는 1 차원 배열은 모두 Newarr를 사용 하 여 생성 되며 newobj되지 않습니다.All zero-based, one-dimensional arrays are created using Newarr, not newobj. 반면에 newobj를 사용 하 여 다른 모든 배열 (둘 이상의 차원 또는 1 차원에 대해서는 0부터 시작 하지 않음)을 만듭니다.On the other hand, all other arrays (more than one dimension, or one-dimensional but not zero-based) are created using newobj.

값 형식은 일반적으로 newobj를 사용 하 여 생성 되지 않습니다.Value types are not usually created using newobj. 이러한 매개 변수는 일반적으로 newarr (0부터 시작 하는 1 차원 배열) 또는 개체 필드로 할당 됩니다.They are usually allocated either as arguments or local variables, using newarr (for zero-based, one-dimensional arrays), or as fields of objects. 할당 되 면 Initobj를 사용 하 여 초기화 됩니다.Once allocated, they are initialized using Initobj. 그러나 newobj 명령을 사용 하 여 스택에 값 형식의 새 인스턴스를 만든 다음 인수로 전달 하 여 로컬에 저장 하는 등의 방법을 사용할 수 있습니다.However, the newobj instruction can be used to create a new instance of a value type on the stack, that can then be passed as an argument, stored in a local, and so on.

메모리가 부족 하 여 요청을 만족 하는 경우 OutOfMemoryException throw 됩니다.OutOfMemoryException is thrown if there is insufficient memory to satisfy the request.

지정 된 이름을 사용 하 여 생성자 메서드를 ctor 하는 경우 MissingMethodException throw 됩니다. 클래스와 시그니처를 찾을 수 없습니다.MissingMethodException is thrown if a constructor method ctor with the indicated name, class and signature could not be found. 이 일반적으로 언어 MSIL (Microsoft Intermediate) 명령이 런타임이 아닌 네이티브 코드로 변환 될 때 감지 합니다.This is typically detected when Microsoft Intermediate Language (MSIL) instructions are converted to native code, rather than at runtime.

다음 Emit 메서드 오버 로드는 newobj opcode를 사용할 수 있습니다.The following Emit method overload can use the newobj opcode:

적용 대상