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
- Наследование
- Атрибуты
Комментарии
Существует несколько случаев, когда компилятор C# обрабатывает как ref неявно scoped , где компилятор не разрешает ref экранировать метод.
Рассмотрим пример.
-
thisдляstructметодов экземпляра. -
refпараметры, ссылающиеся наref structтипы. -
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) |