Delen via


Aangepaste kenmerken die vlaggen of opties genereren in de uitvoer van de tussenliggende taal (IL)

Voeg deze kenmerken toe aan uw code voor de compiler om een opgegeven IL-wijzigingsfunctie (Intermediate Language) te verzenden. Deze kenmerken geven de compiler de instructie om de bijbehorende IL-modifier op te nemen in de uitvoer.

De C#-taalreferentiedocumenten de laatst uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.

De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.

Aanbeveling

Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.

Attribuut Modifier Opmerkingen
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl U kunt opties toevoegen die worden vermeld in de constructor.
System.Runtime.InteropServices.FieldOffsetAttribute .field Hiermee stelt u de veldverschuiving voor de geheugenindeling in.
MarshalAsAttribute marshal U kunt in de constructor vermelde opties instellen.
System.Runtime.CompilerServices.MethodImplAttribute flag Constructorargumenten geven specifieke benoemde vlaggen op, zoals aggressiveinlining of forwardref. Deze vlaggen geven ook de native, managedof optil modifiers voor het System.Runtime.CompilerServices.MethodCodeType veld op.
System.NonSerializedAttribute notserialized
System.Runtime.InteropServices.OptionalAttribute [opt]
System.Runtime.InteropServices.PreserveSigAttribute preservesig
System.SerializableAttribute serializable
System.Runtime.InteropServices.StructLayoutAttribute auto, sequentialof explicit Indelingsopties kunnen worden ingesteld met behulp van de parameters.
System.Runtime.CompilerServices.IndexerNameAttribute Voeg dit kenmerk toe aan een indexeerfunctie om een andere methodenaam in te stellen. Indexeerfuncties worden standaard gecompileerd naar een eigenschap met de naam Item. U kunt een andere naam opgeven met dit kenmerk.

Belangrijk

De [StructLayoutAttribute] kan niet worden gecombineerd met het ExtendedLayout kenmerk.

Sommige van deze aangepaste kenmerken worden toegepast met behulp van andere C#-syntaxis in plaats van het kenmerk toe te voegen aan uw broncode.

Attribuut Opmerkingen
System.Runtime.InteropServices.DefaultParameterValueAttribute Hiermee geeft u de standaardwaarde voor de parameter. Gebruik de standaardparametersyntaxis.
System.Runtime.InteropServices.InAttribute Specificeert de IL [in]-modificator. Gebruik de in of ref readonly modifiers.
System.Runtime.InteropServices.OutAttribute Specificeert de IL [out]-modificator. Gebruik de out modifier.
System.Runtime.CompilerServices.SpecialNameAttribute Specificeert de IL specialname-modificator. De compiler voegt deze wijzigingsfunctie automatisch toe voor methoden die dit vereisen.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Dit kenmerk is vereist voor de delegate*-functie. De compiler voegt deze toe aan alle delegate* waarvoor het gebruik is vereist. U moet dit kenmerk echter toevoegen aan een methodedeclaratie wanneer deze methode wordt toegewezen aan een functieaanwijzer.

De volgende kenmerken zijn over het algemeen niet toegestaan in de C#-bron. Ze worden hier vermeld om auteurs van bibliotheken te helpen die reflectie gebruiken en ervoor te zorgen dat u geen aangepaste attributen met dezelfde volledig gekwalificeerde naam maakt.

Attribuut Opmerkingen
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute Hiermee voorkomt u dat downlevel compilers metagegevens gebruiken die ze niet veilig kunnen begrijpen.
System.Runtime.CompilerServices.DecimalConstantAttribute Codeert const decimal velden. De runtime biedt geen ondersteuning voor decimal waarden als constante waarden.
System.Reflection.DefaultMemberAttribute Codeert indexeerfuncties met System.Runtime.CompilerServices.IndexerNameAttribute. Dit kenmerk noteert de standaardindexeerfunctie wanneer de naam anders is dan Item. Dit kenmerk is toegestaan in de bron.
System.Runtime.CompilerServices.DynamicAttribute Codeert of een type in een handtekening dynamic is (versus object).
System.Runtime.CompilerServices.ExtensionAttribute Met dit kenmerk worden uitbreidingsmethoden beschreven. De compiler plaatst dit kenmerk ook op de bevatde klassen.
System.Runtime.CompilerServices.FixedBufferAttribute Met dit kenmerk worden fixed structvelden opgegeven.
System.Runtime.CompilerServices.IsByRefLikeAttribute Dit kenmerk specificeert een ref-struct.
System.Runtime.CompilerServices.IsReadOnlyAttribute Dit kenmerk geeft aan dat een parameter de in modifier heeft. Het onderscheidt in parameters van readonly ref of [In] ref.
System.Runtime.CompilerServices.RequiresLocationAttribute Dit kenmerk geeft aan dat een parameter de readonly ref modifier heeft. Het onderscheidt readonly ref van in of [In] ref.
System.Runtime.CompilerServices.IsUnmanagedAttribute Met dit kenmerk wordt de unmanaged beperking voor een typeparameter opgegeven.
System.Runtime.CompilerServices.NullableAttribute, , System.Runtime.CompilerServices.NullableContextAttributeSystem.Runtime.CompilerServices.NullablePublicOnlyAttribute Met deze kenmerken worden null-aantekeningen in uw broncode gecodeerd.
System.ParamArrayAttribute Dit kenmerk codeert de params modifier voor matrixparameters.
System.Runtime.CompilerServices.ParamCollectionAttribute Dit kenmerk codeert de params modifier voor niet-matrixparameters.
System.Runtime.CompilerServices.RefSafetyRulesAttribute Dit kenmerk geeft de C#-versie op die vereist is om inzicht te krijgen in veiligheidsaantekeningen voor ref in de assembly. Referentie-veiligheidsregels evolueren naarmate C# nieuwe functies krijgt.
System.Runtime.CompilerServices.RequiredMemberAttribute Dit kenmerk geeft aan dat de required-modificator is toegepast op een liddeclaratie. Het is de codering van de vereiste leden taalfunctie.
System.Runtime.CompilerServices.TupleElementNamesAttribute Dit kenmerk codeert de namen van tuple-elementen die worden gebruikt in handtekeningen.

Daarnaast kan de compiler een declaratie genereren voor andere kenmerken die intern worden gebruikt. De compiler genereert deze kenmerken in de System.Runtime.CompilerServices naamruimte voor eigen gebruik. Sommige zijn niet in de .NET Runtime-bibliotheken. In plaats daarvan maakt de compiler een definitie voor een internal typedeclaratie in elke assembly waar het kenmerk nodig is.