OpCodes.Initobj Campo
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa cada campo do tipo de valor em um endereço especificado para uma referência nula ou 0 do tipo primitivo apropriado.
public: static initonly System::Reflection::Emit::OpCode Initobj;
public static readonly System.Reflection.Emit.OpCode Initobj;
staticval mutable Initobj : System.Reflection.Emit.OpCode
Public Shared ReadOnly Initobj As OpCode
Valor do campo
Comentários
A tabela a seguir lista o formato de assembly hexadecimal e MSIL (Microsoft Intermediate Language) da instrução, juntamente com um breve resumo de referência:
| Formato | Formato de assembly | Descrição |
|---|---|---|
FE 15 <T> |
initobj
typeTok
|
Inicializa um tipo de valor. |
O comportamento de transição da pilha, em ordem sequencial, é:
O endereço do tipo de valor a ser inicializado é enviado por push para a pilha.
O endereço é retirado da pilha; o tipo de valor no endereço especificado é inicializado como tipo
typeTok.
A instrução initobj inicializa cada campo do tipo de valor especificado pelo endereço enviado por push (do tipo native int, &ou *) para uma referência nula ou um 0 do tipo primitivo apropriado. Depois que esse método for chamado, a instância estará pronta para que um método de construtor seja chamado. Se typeTok for um tipo de referência, essa instrução terá o mesmo efeito que ldnull seguida por stind.ref.
Ao contrário de Newobj, initobj não chama o método construtor.
Initobj destina-se à inicialização de tipos de valor, enquanto newobj é usado para alocar e inicializar objetos.
A seguinte sobrecarga do método Emit pode usar o initobj opcode: