UnscopedRefAttribute Klasse

Definition

Wird verwendet, um eine Byref-Escapes anzugeben und ist nicht auf den Bereich festgelegt.

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
Vererbung
UnscopedRefAttribute
Attribute

Hinweise

Es gibt mehrere Fälle, in denen der C#-Compiler implizit refscoped behandelt – wenn der Compiler die ref Methode nicht escapen lässt.

Beispiel:

  1. this z struct . B. Methoden.
  2. ref-Parameter, die auf ref struct-Typen verweisen.
  3. out Parameter.

Dieses Attribut wird in diesen Fällen verwendet, in denen das ref Escapezeichen zulässig sein soll.

Das Anwenden dieses Attributs in beliebiger Form wirkt sich auf Verbraucher der entsprechenden API aus. Es ist erforderlich, dass API-Autoren die Auswirkungen auf die Lebensdauer der Anwendung dieses Attributs verstehen und wie sich dies auf ihre Benutzer auswirken kann.

<format type="text/markdown">

Dieses Attribut wird speziell von der Laufzeit erkannt. ECMA-335 augment III.1.7.7 definiert Einschränkungen für gültige IL, die auf dieses Attribut verweisen. Wenn dieses Attribut beispielsweise auf eine Instanzmethode eines Werttyps angewendet wird, darf das this Argument die Methode escapen. Wenn das Attribut nicht vorhanden ist, kann sich ein optimierender Compiler darauf this verlassen, bestimmte Codemuster weiter zu optimieren, z. B. das Boxen zu beseitigen. Weitere Informationen finden Sie im ZUSATZ zur ECMA-335 CLI-Spezifikation, Abs. III.1.7.7 ("Opt-In-Einschränkungen").

Da die Laufzeit dieses Attributs verwendet, kann sie nicht von einer Assembly entfernt werden. Die durch Augment III.1.7.7 definierten Einschränkungen gelten nur, wenn die <xref:System.Runtime.CompilerServices.RefSafetyRulesAttribute> auf dem Modul vorhanden ist, sodass dieses Attribut nur in einem Modul dokumentiert ist, das auch mit "RefSafetyRulesAttribute" kommentiert wird.

</Format>

Konstruktoren

Name Beschreibung
UnscopedRefAttribute()

Initialisiert eine neue Instanz der UnscopedRefAttribute-Klasse.

Eigenschaften

Name Beschreibung
TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diesen instance zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: