Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dodaj te atrybuty do kodu kompilatora, aby emitować określony modyfikator języka pośredniego (IL). Te atrybuty instruują kompilator, aby uwzględnił odpowiedni modyfikator IL w danych wyjściowych.
Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację funkcji w publicznej wersji zapoznawczej nadchodzącej wersji językowej.
Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.
Wskazówka
Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.
| Atrybut | Modyfikator | Komentarze |
|---|---|---|
| System.Runtime.InteropServices.ComImportAttribute | import |
|
| System.Runtime.InteropServices.DllImportAttribute | pinvokeimpl |
Możesz dodać opcje wymienione w konstruktorze. |
| System.Runtime.InteropServices.FieldOffsetAttribute | .field |
Ustawia przesunięcie pola w układzie pamięci. |
| MarshalAsAttribute | marshal |
Można ustawić opcje wymienione w konstruktorze. |
| System.Runtime.CompilerServices.MethodImplAttribute | flag |
Argumenty konstruktora określają określone nazwane flagi, takie jak aggressiveinlining lub forwardref. Te flagi określają również modyfikatory native, managedlub optil dla pola 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, sequentiallub explicit |
Opcje układu można ustawić przy użyciu parametrów. |
| System.Runtime.CompilerServices.IndexerNameAttribute | Dodaj ten atrybut do indeksatora, aby ustawić inną nazwę metody. Domyślnie indeksatory są kompilowane do właściwości o nazwie Item. Możesz określić inną nazwę przy użyciu tego atrybutu. |
Ważne
StructLayoutAttribute[] nie można połączyć z atrybutem ExtendedLayout .
Niektóre z tych atrybutów niestandardowych są stosowane przy użyciu innej składni języka C#, a nie dodawania atrybutu do kodu źródłowego.
| Atrybut | Komentarze |
|---|---|
| System.Runtime.InteropServices.DefaultParameterValueAttribute | Określa wartość domyślną parametru. Użyj domyślnej składni parametru . |
| System.Runtime.InteropServices.InAttribute | Określa modyfikator IL [in]. Użyj modyfikatorów in lub ref readonly. |
| System.Runtime.InteropServices.OutAttribute | Określa modyfikator IL [out]. Użyj modyfikatora out. |
| System.Runtime.CompilerServices.SpecialNameAttribute | Określa modyfikator IL specialname. Kompilator automatycznie dodaje ten modyfikator dla metod, które tego wymagają. |
| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute | Ten atrybut jest wymagany dla funkcji delegate*. Kompilator dodaje go do wszystkich delegate*, które wymagają jego użycia. Należy jednak dodać ten atrybut do dowolnej deklaracji metody, gdy ta metoda jest przypisana do wskaźnika funkcji. |
Następujące atrybuty są zwykle niedozwolone w źródle języka C#. Są one wymienione tutaj, aby pomóc autorom bibliotek, którzy używają refleksji, i abyś nie tworzył atrybutów niestandardowych o tej samej całkowicie kwalifikowanej nazwie.
| Atrybut | Komentarze |
|---|---|
| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | Uniemożliwia kompilatorom obniżania poziomu korzystanie z metadanych, których nie mogą bezpiecznie zrozumieć. |
| System.Runtime.CompilerServices.DecimalConstantAttribute | Koduje pola const decimal. Środowisko uruchomieniowe nie obsługuje wartości decimal jako wartości stałych. |
| System.Reflection.DefaultMemberAttribute | Koduje indeksatory za pomocą System.Runtime.CompilerServices.IndexerNameAttribute. Ten atrybut zwraca uwagę na domyślny indeksator, gdy jego nazwa różni się od Item. Ten atrybut jest dozwolony w źródle. |
| System.Runtime.CompilerServices.DynamicAttribute | Koduje, czy typ w podpisie jest dynamic (a nie object). |
| System.Runtime.CompilerServices.ExtensionAttribute | Ten atrybut notuje metody rozszerzeń. Kompilator umieszcza również ten atrybut w klasach zawierających. |
| System.Runtime.CompilerServices.FixedBufferAttribute | Ten atrybut określa pola struktury fixed. |
| System.Runtime.CompilerServices.IsByRefLikeAttribute | Ten atrybut określa strukturę ref. |
| System.Runtime.CompilerServices.IsReadOnlyAttribute | Ten atrybut wskazuje, że parametr ma modyfikator in. Odróżnia on parametry in od parametrów readonly ref lub [In] ref. |
| System.Runtime.CompilerServices.RequiresLocationAttribute | Ten atrybut wskazuje, że parametr ma modyfikator readonly ref. Odróżnia readonly ref od in lub [In] ref. |
| System.Runtime.CompilerServices.IsUnmanagedAttribute | Ten atrybut określa ograniczenie unmanaged dla parametru typu. |
| System.Runtime.CompilerServices.NullableAttribute, , System.Runtime.CompilerServices.NullableContextAttributeSystem.Runtime.CompilerServices.NullablePublicOnlyAttribute | Te atrybuty zawierają adnotacje nullowalności w twoim kodzie źródłowym. |
| System.ParamArrayAttribute | Ten atrybut koduje modyfikator params parametrów tablicy. |
| System.Runtime.CompilerServices.ParamCollectionAttribute | Ten atrybut koduje modyfikator params w parametrach innych niż tablica. |
| System.Runtime.CompilerServices.RefSafetyRulesAttribute | Ten atrybut określa wersję języka C#, która jest wymagana w celu zrozumienia adnotacji bezpieczeństwa ref w zestawie. Reguły bezpieczeństwa ref ewoluują, gdy język C# otrzymuje nowe funkcje. |
| System.Runtime.CompilerServices.RequiredMemberAttribute | Ten atrybut wskazuje, że modyfikator required został umieszczony w deklaracji członka. Jest to kodowanie wymaganych elementów członkowskich funkcji języka. |
| System.Runtime.CompilerServices.TupleElementNamesAttribute | Ten atrybut koduje nazwy elementów w krotkach używane w sygnaturach. |
Ponadto kompilator może wygenerować deklarację dla innych atrybutów używanych wewnętrznie. Kompilator generuje te atrybuty w przestrzeni nazw System.Runtime.CompilerServices do użytku własnego. Niektóre z nich nie są w bibliotekach środowiska uruchomieniowego platformy .NET. Zamiast tego kompilator syntetyzuje definicję deklaracji typu internal w dowolnym zestawie, w którym jest wymagany atrybut.