UnscopedRefAttribute Класс

Определение

Используется для указания escape-ссылок и не ограничивается областью действия.

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
Наследование
UnscopedRefAttribute
Атрибуты

Комментарии

Существует несколько случаев, когда компилятор C# обрабатывает как ref неявно scoped , где компилятор не разрешает ref экранировать метод.

Рассмотрим пример.

  1. this для struct методов экземпляра.
  2. ref параметры, ссылающиеся на ref struct типы.
  3. out Параметры.

Этот атрибут используется в тех экземплярах, где ref должно быть разрешено экранировать.

Применение этого атрибута в любой форме влияет на потребителей применимого API. Авторам API необходимо понять последствия применения этого атрибута и того, как это может повлиять на пользователей.

<format type="text/markdown">

Этот атрибут специально распознается средой выполнения. ECMA-335 augment III.1.7.7 определяет ограничения допустимого IL, ссылающегося на этот атрибут. Например, если этот атрибут применяется к методу экземпляра типа значения, this аргумент может экранировать метод. Если атрибут отсутствует, оптимизатор может полагаться на this то, чтобы не избежать дальнейшего оптимизации определенных шаблонов кода, таких как устранение бокса. Дополнительные сведения см. в надстройке надстройки спецификации CLI ECMA-335, Sec. III.1.7.7 ("Ограничения в использовании").

Так как среда выполнения зависит от этого атрибута, она не может быть удалена из сборки. Ограничения, определенные расширением III.1.7.7, применяются только в том случае, если <в модуле xref:System.Runtime.CompilerServices.RefSafetyRulesAttribute присутствует этот атрибут, поэтому этот атрибут имеет свой документированный эффект только в модуле, который также помечен как RefSafetyRulesAttribute> .

</Формат>

Конструкторы

Имя Описание
UnscopedRefAttribute()

Инициализирует новый экземпляр класса UnscopedRefAttribute.

Свойства

Имя Описание
TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к