Dela via


Anpassade attribut som genererar flaggor eller alternativ i il-utdata (Intermediate Language)

Lägg till dessa attribut i koden för kompilatorn för att generera en angiven IL-modifierare (Intermediate Language). Dessa attribut instruerar kompilatorn att inkludera motsvarande IL-modifierare i utdata.

C#-språkreferensen dokumenterar den senaste versionen av C#-språket. Den innehåller även inledande dokumentation för funktioner i offentliga förhandsversioner för den kommande språkversionen.

Dokumentationen identifierar alla funktioner som först introducerades i de tre senaste versionerna av språket eller i aktuella offentliga förhandsversioner.

Tips/Råd

Information om när en funktion först introducerades i C# finns i artikeln om språkversionshistoriken för C#.

Attribut Modifierare Kommentarer
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl Du kan lägga till alternativ som anges i konstruktorn.
System.Runtime.InteropServices.FieldOffsetAttribute .field Detta anger fältförskjutningen för minneslayouten.
MarshalAsAttribute marshal Du kan ange alternativ som anges i konstruktorn.
System.Runtime.CompilerServices.MethodImplAttribute flag Konstruktorargument anger specifika namngivna flaggor som aggressiveinlining eller forwardref. Dessa flaggor anger också native, managedeller optil modifierare för fältet 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, sequentialeller explicit Layoutalternativ kan anges med hjälp av parametrarna.
System.Runtime.CompilerServices.IndexerNameAttribute Lägg till det här attributet i en indexerare för att ange ett annat metodnamn. Indexerare kompileras som standard till en egenskap med namnet Item. Du kan ange ett annat namn med det här attributet.

Viktigt!

[StructLayoutAttribute] kan inte kombineras med attributet ExtendedLayout .

Vissa av dessa anpassade attribut används med hjälp av annan C#-syntax i stället för att lägga till attributet i källkoden.

Attribut Kommentarer
System.Runtime.InteropServices.DefaultParameterValueAttribute Anger standardvärdet för parametern. Använd standardparametersyntax.
System.Runtime.InteropServices.InAttribute Anger den IL[in]-modifierare. Använd in- eller ref readonly-modifierare.
System.Runtime.InteropServices.OutAttribute Anger den IL[out]-modifierare. Använd out-modifieraren.
System.Runtime.CompilerServices.SpecialNameAttribute Anger den ILspecialname-modifierare. Kompilatorn lägger automatiskt till den här modifieraren för metoder som kräver det.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Det här attributet krävs för funktionen delegate*. Kompilatorn lägger till den i alla delegate* som kräver dess användning. Du måste dock lägga till det här attributet i en metoddeklaration när metoden tilldelas till en funktionspekare.

Följande attribut tillåts vanligtvis inte i C#-källan. De listas här för att hjälpa utvecklare av bibliotek som använder reflektionsteknik och för att säkerställa att du inte skapar anpassade attribut med samma fullständigt kvalificerade namn.

Attribut Kommentarer
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute Förhindrar att kompilatorer på nednivå använder metadata som de inte kan förstå på ett säkert sätt.
System.Runtime.CompilerServices.DecimalConstantAttribute Kodar const decimal fält. Körtiden stöder inte decimal-värden som konstanter.
System.Reflection.DefaultMemberAttribute Kodar indexerare med System.Runtime.CompilerServices.IndexerNameAttribute. Det här attributet noterar standardindexeraren när dess namn skiljer sig från Item. Det här attributet tillåts i källan.
System.Runtime.CompilerServices.DynamicAttribute Kodar om en typ i en signatur är dynamic (jämfört med object).
System.Runtime.CompilerServices.ExtensionAttribute Det här attributet noterar tilläggsmetoder. Kompilatorn placerar även det här attributet på de innehållande klasserna.
System.Runtime.CompilerServices.FixedBufferAttribute Detta attribut anger fält i fixed-strukturen.
System.Runtime.CompilerServices.IsByRefLikeAttribute Det här attributet anger en ref struct.
System.Runtime.CompilerServices.IsReadOnlyAttribute Det här attributet anger att en parameter har in-modifieraren. Den skiljer in parametrar från readonly ref eller [In] ref.
System.Runtime.CompilerServices.RequiresLocationAttribute Det här attributet anger att en parameter har readonly ref-modifieraren. Den skiljer readonly ref från in eller [In] ref.
System.Runtime.CompilerServices.IsUnmanagedAttribute Det här attributet anger unmanaged villkor för en typparameter.
System.Runtime.CompilerServices.NullableAttribute, , System.Runtime.CompilerServices.NullableContextAttributeSystem.Runtime.CompilerServices.NullablePublicOnlyAttribute Dessa attribut kodar nullbara anteckningar i källkoden.
System.ParamArrayAttribute Det här attributet kodar params modifierare för matrisparametrar.
System.Runtime.CompilerServices.ParamCollectionAttribute Det här attributet kodar params modifieraren på parametrar som inte är matrisparametrar.
System.Runtime.CompilerServices.RefSafetyRulesAttribute Det här attributet anger den C#-version som krävs för att förstå referenssäkerhetsanteckningar i sammansättningen. Referenssäkerhetsregler utvecklas när C# får nya funktioner.
System.Runtime.CompilerServices.RequiredMemberAttribute Det här attributet anger att required-modifieraren har placerats i en medlemsdeklaration. Det är kodningen av nödvändiga medlemmar språkfunktion.
System.Runtime.CompilerServices.TupleElementNamesAttribute Det här attributet kodar tupelelementens namn som används i signaturer.

Kompilatorn kan dessutom generera en deklaration för andra attribut som används internt. Kompilatorn genererar dessa attribut i System.Runtime.CompilerServices namnrymd för eget bruk. Vissa finns inte i .NET Runtime-biblioteken. Kompilatorn syntetiserar i stället en definition för en internal typdeklaration i alla sammansättningar där attributet behövs.