UnscopedRefAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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:
-
thisdlastructmetod na przykład. -
refparametry odwołujące się doref structtypów. -
outParametry.
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) |