Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Adicione estes atributos ao seu código para que o compilador emita um modificador de Linguagem Intermédia (IL) especificado. Esses atributos instruem o compilador a incluir o modificador IL correspondente na saída.
A referência da linguagem C# documenta a versão mais recentemente lançada da linguagem C#. Contém também documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento linguístico.
A documentação identifica qualquer funcionalidade introduzida pela primeira vez nas últimas três versões da língua ou em pré-visualizações públicas atuais.
Sugestão
Para saber quando uma funcionalidade foi introduzida pela primeira vez em C#, consulte o artigo sobre o histórico de versões da linguagem C#.
| Atributo | Modificador | Observações |
|---|---|---|
| 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 o offset do campo para o layout da memória. |
| MarshalAsAttribute | marshal |
Você pode definir 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, managedou 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, sequentialou explicit |
As opções de layout podem ser definidas usando os parâmetros. |
| System.Runtime.CompilerServices.IndexerNameAttribute | Adicione este 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 destes atributos personalizados são aplicados usando outra sintaxe C# em vez de adicionar o atributo ao seu código-fonte.
| Atributo | Observações |
|---|---|
| System.Runtime.InteropServices.DefaultParameterValueAttribute | Especifica o valor padrão para o parâmetro. Use a sintaxe do parâmetro padrão . |
| System.Runtime.InteropServices.InAttribute | Especifica o modificador IL [in]. Use os modificadores 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 | Esse atributo é necessário para o recurso delegate*. O compilador adiciona-o a qualquer delegate* que exija o 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 fonte C#. Eles estão listados aqui para ajudar os autores da biblioteca que usam reflexão e para garantir que você não crie atributos personalizados com o mesmo nome totalmente qualificado.
| Atributo | Observações |
|---|---|
| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | Impede compiladores de nível inferior de usar metadados que não conseguem compreender em segurança. |
| System.Runtime.CompilerServices.DecimalConstantAttribute | Codifica campos const decimal. O tempo de execução não suporta 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. Este atributo é permitido na origem. |
| System.Runtime.CompilerServices.DynamicAttribute | Codifica se um tipo em uma assinatura é dynamic (versus object). |
| System.Runtime.CompilerServices.ExtensionAttribute | Este atributo nota métodos de extensão. O compilador também coloca esse atributo nas classes que o contêm. |
| System.Runtime.CompilerServices.FixedBufferAttribute | Este atributo especifica os campos da estrutura fixed. |
| System.Runtime.CompilerServices.IsByRefLikeAttribute | Este atributo especifica um ref struct. |
| System.Runtime.CompilerServices.IsReadOnlyAttribute | Este atributo indica que um parâmetro tem o modificador in. Distingue parâmetros in de readonly ref ou [In] ref. |
| System.Runtime.CompilerServices.RequiresLocationAttribute | Este atributo indica que um parâmetro tem o modificador readonly ref. Distingue readonly ref de in ou [In] ref. |
| System.Runtime.CompilerServices.IsUnmanagedAttribute | Este atributo especifica a restrição de unmanaged em um parâmetro type. |
| System.Runtime.CompilerServices.NullableAttribute, System.Runtime.CompilerServices.NullableContextAttribute, System.Runtime.CompilerServices.NullablePublicOnlyAttribute | Esses atributos codificam anotações anuláveis em seu código-fonte. |
| System.ParamArrayAttribute | Este atributo codifica o modificador params em parâmetros de matriz. |
| System.Runtime.CompilerServices.ParamCollectionAttribute | Este atributo codifica o modificador params em parâmetros que não sejam de matriz. |
| System.Runtime.CompilerServices.RefSafetyRulesAttribute | Este atributo especifica a versão C# necessária para entender as anotações de segurança ref no assembly. As regras de segurança de referência evoluem à medida que o C# recebe novos recursos. |
| System.Runtime.CompilerServices.RequiredMemberAttribute | Esse atributo indica que o modificador de required foi colocado em uma declaração de membro. É a codificação dos membros necessários do recurso de idioma . |
| System.Runtime.CompilerServices.TupleElementNamesAttribute | Este atributo codifica nomes de elementos de tupla usados em 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 seu próprio uso. Alguns não estão nas bibliotecas do .NET Runtime. Em vez disso, o compilador sintetiza uma definição para uma declaração de tipo internal em qualquer assembly onde o atributo é necessário.