Bagikan melalui


Atribut kustom yang menghasilkan bendera atau opsi dalam output Bahasa Perantara (IL)

Anda menambahkan atribut ini ke kode Anda untuk pengkompilasi guna memancarkan pengubah Bahasa Perantara (IL) tertentu. Atribut ini menginstruksikan pengkompilasi untuk menyertakan pengubah IL yang sesuai dalam output.

Atribut Pengubah Komentar
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl Anda dapat menambahkan opsi yang tercantum dalam konstruktor.
System.Runtime.InteropServices.FieldOffsetAttribute .field Ini mengatur offset bidang untuk tata letak memori.
MarshalAsAttribute marshal Anda dapat mengatur opsi yang tercantum dalam konstruktor.
System.Runtime.CompilerServices.MethodImplAttribute flag Argumen konstruktor menentukan bendera bernama tertentu seperti aggressiveinlining atau forwardref. Bendera ini juga menentukan pengubah native, managed, atau optil untuk bidang 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, sequential, atau explicit Opsi tata letak dapat diatur menggunakan parameter .
System.Runtime.CompilerServices.IndexerNameAttribute Anda menambahkan atribut ini ke pengindeks untuk mengatur nama metode yang berbeda. Secara default, pengindeks dikompilasi ke properti bernama Item. Anda dapat menentukan nama yang berbeda menggunakan atribut ini.

Beberapa atribut kustom ini diterapkan menggunakan sintaks C# lainnya daripada menambahkan atribut ke kode sumber Anda.

Atribut Komentar
System.Runtime.InteropServices.DefaultParameterValueAttribute Menentukan nilai default untuk parameter . Gunakan sintaks parameter default .
System.Runtime.InteropServices.InAttribute Menentukan pengubah IL [in]. Gunakan pengubah in atau ref readonly.
System.Runtime.InteropServices.OutAttribute Menentukan pengubah IL [out]. Gunakan pengubah out.
System.Runtime.CompilerServices.SpecialNameAttribute Menentukan pengubah IL specialname. Pengkompilasi secara otomatis menambahkan pengubah ini untuk metode yang memerlukannya.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Atribut ini diperlukan untuk fitur delegate*. Pengkompilasi menambahkannya ke setiap delegate* yang membutuhkan penggunaannya. Namun, Anda harus menambahkan atribut ini ke deklarasi metode apa pun ketika metode tersebut ditetapkan ke penunjuk fungsi.

Atribut berikut umumnya tidak diizinkan dalam sumber C#. Mereka tercantum di sini untuk membantu penulis perpustakaan yang menggunakan refleksi, dan untuk memastikan Anda tidak membuat atribut kustom dengan nama lengkap yang sama.

Atribut Komentar
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute Mencegah pengkompilasi downlevel menggunakan metadata yang tidak dapat dipahami dengan aman.
System.Runtime.CompilerServices.DecimalConstantAttribute Mengodekan bidang const decimal. Runtime tidak mendukung nilai decimal sebagai nilai konstanta.
System.Reflection.DefaultMemberAttribute Mengodekan pengindeks dengan System.Runtime.CompilerServices.IndexerNameAttribute. Atribut ini mencatat pengindeks default ketika namanya berbeda dari Item. Atribut ini diizinkan di sumber.
System.Runtime.CompilerServices.DynamicAttribute Menandai apakah tipe dalam tanda tangan adalah dynamic (dibandingkan dengan object).
System.Runtime.CompilerServices.ExtensionAttribute Atribut ini mencatat metode ekstensi. Pengkompilasi juga menempatkan atribut ini pada kelas yang berisi.
System.Runtime.CompilerServices.FixedBufferAttribute Atribut ini menentukan fixed bidang struct.
System.Runtime.CompilerServices.IsByRefLikeAttribute Atribut ini menentukan struktur ref.
System.Runtime.CompilerServices.IsReadOnlyAttribute Atribut ini menunjukkan bahwa parameter memiliki pengubah in. Ini membedakan parameter in dari readonly ref atau [In] ref.
System.Runtime.CompilerServices.RequiresLocationAttribute Atribut ini menunjukkan bahwa parameter memiliki pengubah readonly ref. Ini membedakan readonly ref dari in atau [In] ref.
System.Runtime.CompilerServices.IsUnmanagedAttribute Atribut ini menentukan batasan unmanaged pada parameter jenis.
System.Runtime.CompilerServices.NullableAttribute, System.Runtime.CompilerServices.NullableContextAttribute, System.Runtime.CompilerServices.NullablePublicOnlyAttribute Atribut ini mengenkode anotasi yang mampu bernilai null dalam kode sumber Anda.
System.ParamArrayAttribute Atribut ini mengodekan pengubah params pada parameter array.
System.Runtime.CompilerServices.ParamCollectionAttribute Atribut ini mengodekan pengubah params pada parameter non-array.
System.Runtime.CompilerServices.RefSafetyRulesAttribute Atribut ini menentukan versi C# yang diperlukan untuk memahami anotasi keamanan ref di rakitan. Aturan keselamatan ref berkembang karena C# mendapatkan fitur baru.
System.Runtime.CompilerServices.RequiredMemberAttribute Atribut ini menunjukkan bahwa pengubah required ditempatkan pada deklarasi anggota. Ini adalah pengodean fitur bahasa anggota yang diperlukan.
System.Runtime.CompilerServices.TupleElementNamesAttribute Atribut ini mengodekan nama elemen tuple yang digunakan dalam tanda tangan.

Selain itu, kompilator dapat menghasilkan deklarasi untuk atribut lain yang digunakan secara internal. Pengkompilasi menghasilkan atribut ini di namespace System.Runtime.CompilerServices untuk penggunaannya sendiri. Beberapa tidak berada di pustaka .NET Runtime. Sebagai gantinya, kompilator mensintesis definisi untuk deklarasi jenis internal di rakitan apa pun di mana atribut diperlukan.