UnscopedRefAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Digunakan untuk menunjukkan byref escape dan tidak terlingkup.
public ref class UnscopedRefAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)]
public sealed class UnscopedRefAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)>]
type UnscopedRefAttribute = class
inherit Attribute
Public NotInheritable Class UnscopedRefAttribute
Inherits Attribute
- Warisan
- Atribut
Keterangan
Ada beberapa kasus di mana pengkompilasi C# memperlakukan secara implisit ref - di mana pengkompilasi tidak memungkinkan scoped untuk lolos ref dari metode.
Contohnya:
-
thisuntukstructmetode instans. -
refparameter-parameter yang merujuk keref structjenis-jenis. -
outParameter.
Atribut ini digunakan dalam instans di ref mana harus diizinkan untuk melarikan diri.
Menerapkan atribut ini, dalam bentuk apa pun, memengaruhi konsumen API yang berlaku. Penulis API perlu memahami implikasi seumur hidup menerapkan atribut ini dan bagaimana hal itu dapat berdampak pada pengguna mereka.
<format type="text/markdown">
Atribut ini secara khusus dikenali oleh runtime. Augment ECMA-335 III.1.7.7 mendefinisikan pembatasan pada IL valid yang mereferensikan atribut ini. Misalnya, ketika atribut ini diterapkan ke metode instans dari jenis nilai, this argumen diizinkan untuk keluar dari metode . Ketika atribut tidak ada, pengoptimalan pengkompilasi dapat mengandalkan this untuk tidak melarikan diri untuk lebih mengoptimalkan pola kode tertentu, seperti menghilangkan tinju. Untuk informasi selengkapnya, lihat Adendum Spesifikasi ECMA-335 CLI, Sec. III.1.7.7 ("Pembatasan keikutsertaan").
Karena runtime bergantung pada atribut ini, runtime tidak dapat dilucuti dari rakitan. Pembatasan yang ditentukan oleh augment III.1.7.7 hanya berlaku ketika <xref:System.Runtime.CompilerServices.RefSafetyRulesAttribute> ada pada modul, sehingga atribut ini memiliki efek yang didokumentasikan hanya dalam modul yang juga diannotasikan dengan 'RefSafetyRulesAttribute'.
</Format>
Konstruktor
| Nama | Deskripsi |
|---|---|
| UnscopedRefAttribute() |
Menginisialisasi instans baru dari kelas UnscopedRefAttribute. |
Properti
| Nama | Deskripsi |
|---|---|
| TypeId |
Ketika diimplementasikan dalam kelas turunan, mendapatkan pengidentifikasi unik untuk Attributeini. (Diperoleh dari Attribute) |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| IsDefaultAttribute() |
Ketika ditimpa dalam kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
| Match(Object) |
Saat ditimpa dalam kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |