UnscopedRefAttribute Klasa

Definicja

Służy do wskazywania ucieczki byref i nie ma zakresu.

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
Dziedziczenie
UnscopedRefAttribute
Atrybuty

Uwagi

Istnieje kilka przypadków, w których kompilator języka C# traktuje ref element niejawnie scoped — gdzie kompilator nie zezwala na ref ucieczkę metody.

Przykład:

  1. this dla struct metod na przykład.
  2. ref parametry odwołujące się do ref struct typów.
  3. out Parametry.

Ten atrybut jest używany w tych wystąpieniach, w których należy zezwolić na ucieczkę ref .

Zastosowanie tego atrybutu w dowolnej formie wpływa na użytkowników odpowiedniego interfejsu API. Autorom interfejsu API należy zrozumieć implikacje dotyczące stosowania tego atrybutu i sposobu, w jaki może to mieć wpływ na użytkowników.

<format type="text/markdown">

Ten atrybut jest specjalnie rozpoznawany przez środowisko uruchomieniowe. ECMA-335 augment III.1.7.7 definiuje ograniczenia dotyczące prawidłowego il odwołującego się do tego atrybutu. Na przykład gdy ten atrybut jest stosowany do metody wystąpienia typu wartości, this argument może uciec od metody . Gdy atrybut jest nieobecny, optymalizowanie kompilatora może polegać na this braku ucieczki w celu dalszej optymalizacji niektórych wzorców kodu, takich jak wyeliminowanie boxingu. Aby uzyskać więcej informacji, zobacz dodatek specyfikacji interfejsu wiersza polecenia ECMA-335, s. III.1.7.7 ("Ograniczenia opt-in").

Ponieważ środowisko uruchomieniowe opiera się na tym atrybucie, nie można go usunąć z zestawu. Ograniczenia zdefiniowane przez rozszerzenie III.1.7.7 mają zastosowanie tylko wtedy, gdy <atrybut xref:System.Runtime.CompilerServices.RefSafetyRulesAttribute> jest obecny w module, więc ten atrybut ma udokumentowany wpływ tylko w module, który jest również oznaczony adnotacją "RefSafetyRulesAttribute".

</Formacie>

Konstruktory

Nazwa Opis
UnscopedRefAttribute()

Inicjuje nowe wystąpienie klasy UnscopedRefAttribute.

Właściwości

Nazwa Opis
TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute.

(Odziedziczone po Attribute)

Metody

Nazwa Opis
Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca kod skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

Po zastąpieniu w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po zastąpieniu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy