Megosztás a következőn keresztül:


Egyéni attribútumok, amelyek jelzőket vagy beállításokat hoznak létre a köztes nyelv (IL) kimenetében

Adja hozzá ezeket az attribútumokat a fordító kódjához, hogy kibocsátson egy megadott köztes nyelv (IL) módosítót. Ezek az attribútumok arra utasítják a fordítót, hogy foglalja bele a megfelelő IL-módosítót a kimenetbe.

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

Attribútum Módosító Megjegyzések
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl A konstruktorban felsorolt beállításokat is hozzáadhatja.
System.Runtime.InteropServices.FieldOffsetAttribute .field Ezzel beállítja a memóriaelrendezés mezőeltolását.
MarshalAsAttribute marshal A konstruktorban felsorolt beállításokat megadhatja.
System.Runtime.CompilerServices.MethodImplAttribute flag A konstruktor argumentumai meghatározott elnevezett jelzőket határoznak meg, például aggressiveinlining vagy forwardref. Ezek a jelzők a native mező managed, optilvagy System.Runtime.CompilerServices.MethodCodeType módosítóit is megadják.
System.NonSerializedAttribute notserialized
System.Runtime.InteropServices.OptionalAttribute [opt]
System.Runtime.InteropServices.PreserveSigAttribute preservesig
System.SerializableAttribute serializable
System.Runtime.InteropServices.StructLayoutAttribute auto, sequentialvagy explicit Az elrendezési beállítások a paraméterek használatával állíthatók be.
System.Runtime.CompilerServices.IndexerNameAttribute Adja hozzá ezt az attribútumot egy indexelőhöz egy másik metódusnév beállításához. Alapértelmezés szerint az indexelők egy Itemnevű tulajdonságra vannak lefordítva. Ezzel az attribútummal más nevet is megadhat.

Fontos

A [StructLayoutAttribute] nem kombinálható az ExtendedLayout attribútummal.

Ezen egyéni attribútumok némelyikét más C#-szintaxissal alkalmazza a rendszer ahelyett, hogy hozzáadja az attribútumot a forráskódhoz.

Attribútum Megjegyzések
System.Runtime.InteropServices.DefaultParameterValueAttribute A paraméter alapértelmezett értékét adja meg. Használja a paraméter alapértelmezett szintaxisát.
System.Runtime.InteropServices.InAttribute Az IL [in] módosítót adja meg. Használja a in vagy ref readonly módosítókat.
System.Runtime.InteropServices.OutAttribute Az IL [out] módosítót adja meg. Használja a out módosító elemet.
System.Runtime.CompilerServices.SpecialNameAttribute Az IL specialname módosítót adja meg. A fordító automatikusan hozzáadja ezt a módosítót a szükséges metódusokhoz.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Ez az attribútum szükséges a delegate* funkcióhoz. A fordító hozzáadja azt minden olyan delegate*-hoz, amelyhez szükséges a használata. Ezt az attribútumot azonban minden metódusdeklarációhoz hozzá kell adni, ha a metódus egy függvénymutatóhoz van rendelve.

A C#-forrásban a következő attribútumok általában nem engedélyezettek. Az itt felsoroltak segítséget biztosítanak a tükrözést használó kódtár-szerzőknek, és biztosítják, hogy ne hozzon létre egyéni attribútumokat ugyanazzal a teljes névvel.

Attribútum Megjegyzések
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute Megakadályozza, hogy az alsó szintű fordítók olyan metaadatokat használjanak, amelyek nem értelmezhetők biztonságosan.
System.Runtime.CompilerServices.DecimalConstantAttribute Kódolja const decimal mezőket. A futtatókörnyezet nem támogatja decimal értékeket állandó értékekként.
System.Reflection.DefaultMemberAttribute Indexelőket kódol System.Runtime.CompilerServices.IndexerNameAttribute. Ez az attribútum jelöli az alapértelmezett indexelőt, amennyiben a neve eltér a Item-től. Ez az attribútum engedélyezett a forrásban.
System.Runtime.CompilerServices.DynamicAttribute Kódolja, hogy egy aláírás típusa dynamic-e (szemben a object).
System.Runtime.CompilerServices.ExtensionAttribute Ez az attribútum megjegyzi a bővítmény metódusait. A fordító ezt az attribútumot a tartalmazó osztályokra is elhelyezi.
System.Runtime.CompilerServices.FixedBufferAttribute Ez az attribútum fixed strukturált mezőket határozza meg.
System.Runtime.CompilerServices.IsByRefLikeAttribute Ez az attribútum egy ref szerkezetet határoz meg.
System.Runtime.CompilerServices.IsReadOnlyAttribute Ez az attribútum azt jelzi, hogy egy paraméter rendelkezik a in módosítóval. Megkülönbözteti a in paramétereket a readonly ref vagy [In] refparaméterektől.
System.Runtime.CompilerServices.RequiresLocationAttribute Ez az attribútum azt jelzi, hogy egy paraméter rendelkezik a readonly ref módosítóval. Megkülönbözteti a readonly ref-at a in-től vagy a [In] ref-től.
System.Runtime.CompilerServices.IsUnmanagedAttribute Ez az attribútum egy típusparaméter unmanaged korlátozását határozza meg.
\, \, \ Ezek az attribútumok null értékű széljegyzeteket kódolnak a forráskódban.
System.ParamArrayAttribute Ez az attribútum tömbparamétereken kódolja a params módosítóját.
System.Runtime.CompilerServices.ParamCollectionAttribute Ez az attribútum nem tömbparamétereken kódolja a params módosítóját.
System.Runtime.CompilerServices.RefSafetyRulesAttribute Ez az attribútum a szerelvény ref biztonsági megjegyzéseinek megértéséhez szükséges C# verziót adja meg. A ref biztonsági szabályok úgy fejlődnek, hogy a C# új funkciókat kap.
System.Runtime.CompilerServices.RequiredMemberAttribute Ez az attribútum azt jelzi, hogy a required módosító tagdeklarációra lett helyezve. Ez a szükséges tagoknak a nyelvi funkció szerinti kódolása.
System.Runtime.CompilerServices.TupleElementNamesAttribute Ez az attribútum kódolja az aláírásokban használt tupelemek nevét.

A fordító emellett deklarációt is létrehozhat a belsőleg használt egyéb attribútumokhoz. A fordító saját használatra létrehozza ezeket az attribútumokat a System.Runtime.CompilerServices névtérben. Néhány nem szerepel a .NET futtatókörnyezeti kódtárakban. A fordító ehelyett egy internal típusú deklaráció definícióját szintetizálja minden olyan szerelvényben, ahol az attribútumra szükség van.