Bahasa

UnscopedRefAttribute Kelas

Definisi

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
UnscopedRefAttribute
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:

  1. this untuk struct metode instans.
  2. ref parameter-parameter yang merujuk ke ref struct jenis-jenis.
  3. out Parameter.

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)

Berlaku untuk