Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Adicione esses atributos ao código do compilador para emitir um modificador de IL (Linguagem Intermediária) especificado. Esses atributos instruem o compilador a incluir o modificador IL correspondente na saída.
A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para recursos em visualizações públicas para a próxima versão do idioma.
A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.
Dica
Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.
| Atributo | Modificador | Comentários |
|---|---|---|
| System.Runtime.InteropServices.ComImportAttribute | import |
|
| System.Runtime.InteropServices.DllImportAttribute | pinvokeimpl |
Você pode adicionar opções listadas no construtor. |
| System.Runtime.InteropServices.FieldOffsetAttribute | .field |
Isso define a diferença de campo no layout de memória. |
| MarshalAsAttribute | marshal |
Você pode definir as opções listadas no construtor. |
| System.Runtime.CompilerServices.MethodImplAttribute | flag |
Os argumentos do construtor especificam sinalizadores nomeados específicos, como aggressiveinlining ou forwardref. Esses sinalizadores também especificam os modificadores native, managed ou optil para o campo System.Runtime.CompilerServices.MethodCodeType. |
| System.NonSerializedAttribute | notserialized |
|
| System.Runtime.InteropServices.OptionalAttribute | [opt] |
|
| System.Runtime.InteropServices.PreserveSigAttribute | preservesig |
|
| System.SerializableAttribute | serializable |
|
| System.Runtime.InteropServices.StructLayoutAttribute |
auto, sequential ou explicit |
As opções de layout podem ser definidas usando os parâmetros. |
| System.Runtime.CompilerServices.IndexerNameAttribute | Adicione esse atributo a um indexador para definir um nome de método diferente. Por padrão, os indexadores são compilados para uma propriedade chamada Item. Você pode especificar um nome diferente usando esse atributo. |
Importante
O [StructLayoutAttribute] não pode ser combinado com o ExtendedLayout atributo.
Alguns desses atributos personalizados são aplicados usando outra sintaxe C# em vez de adicionar o atributo ao código-fonte.
| Atributo | Comentários |
|---|---|
| System.Runtime.InteropServices.DefaultParameterValueAttribute | Especifica o valor padrão a ser usado para o parâmetro. Use a sintaxe de parâmetro padrão. |
| System.Runtime.InteropServices.InAttribute | Especifica o modificador IL [in]. Use os modificadores de in ou ref readonly. |
| System.Runtime.InteropServices.OutAttribute | Especifica o modificador IL [out]. Use o modificador out. |
| System.Runtime.CompilerServices.SpecialNameAttribute | Especifica o modificador IL specialname. O compilador adiciona automaticamente esse modificador para métodos que o exigem. |
| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute | Este atributo é exigido pelo recurso delegate*. O compilador adiciona ele a qualquer delegate* que exija seu uso. No entanto, você deve adicionar esse atributo a qualquer declaração de método quando esse método é atribuído a um ponteiro de função. |
Os atributos a seguir geralmente não são permitidos na origem C#. Eles são listados aqui para ajudar autores de bibliotecas que usam reflexão e garantir que você não crie atributos personalizados com o mesmo nome totalmente qualificado.
| Atributo | Comentários |
|---|---|
| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | Impede que os compiladores de nível inferior usem metadados que eles não podem entender com segurança. |
| System.Runtime.CompilerServices.DecimalConstantAttribute | Codifica os campos do const decimal. O runtime não dá suporte a valores decimal como valores constantes. |
| System.Reflection.DefaultMemberAttribute | Codifica indexadores com System.Runtime.CompilerServices.IndexerNameAttribute. Esse atributo observa o indexador padrão quando seu nome é diferente de Item. Esse atributo é permitido na fonte. |
| System.Runtime.CompilerServices.DynamicAttribute | Codifica se um tipo em uma assinatura é dynamic (versus object). |
| System.Runtime.CompilerServices.ExtensionAttribute | Esse atributo indica métodos de extensão. O compilador também coloca esse atributo nas classes que contêm. |
| System.Runtime.CompilerServices.FixedBufferAttribute | Esse atributo especifica campos da estrutura fixed. |
| System.Runtime.CompilerServices.IsByRefLikeAttribute | Esse atributo especifica um struct ref. |
| System.Runtime.CompilerServices.IsReadOnlyAttribute | Esse atributo indica que um parâmetro tem o modificador in. Ele distingue parâmetros do in de readonly ref ou [In] ref. |
| System.Runtime.CompilerServices.RequiresLocationAttribute | Esse atributo indica que um parâmetro tem o modificador readonly ref. Ele distingue readonly ref de in ou de [In] ref. |
| System.Runtime.CompilerServices.IsUnmanagedAttribute | Esse atributo especifica a restrição unmanaged em um parâmetro de tipo. |
| System.Runtime.CompilerServices.NullableAttribute, , System.Runtime.CompilerServices.NullableContextAttributeSystem.Runtime.CompilerServices.NullablePublicOnlyAttribute | Esses atributos codificam anotações anuláveis no código-fonte. |
| System.ParamArrayAttribute | Esse atributo codifica o modificador params em parâmetros de matriz. |
| System.Runtime.CompilerServices.ParamCollectionAttribute | Esse atributo codifica o modificador params em parâmetros que não são de matriz. |
| System.Runtime.CompilerServices.RefSafetyRulesAttribute | Esse atributo especifica a versão do C# necessária para entender as anotações de segurança de ref no assembly. As regras de segurança de ref evoluem conforme o C# ganha novos recursos. |
| System.Runtime.CompilerServices.RequiredMemberAttribute | Esse atributo indica que o modificador de required foi colocado em uma declaração de membro. Trata-se da codificação dos membros obrigatórios do recurso de linguagem. |
| System.Runtime.CompilerServices.TupleElementNamesAttribute | Esse atributo codifica nomes de elementos de tupla usados nas assinaturas. |
Além disso, o compilador pode gerar uma declaração para outros atributos usados internamente. O compilador gera esses atributos no namespace System.Runtime.CompilerServices para uso próprio. Algumas não estão nas bibliotecas do Runtime do .NET. Em vez disso, o compilador sintetiza uma definição para uma declaração de tipo internal em qualquer assembly em que o atributo é necessário.