UnscopedRefAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Usado para indicar que um byref escapa e não está sob mira.
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
- Herança
- Atributos
Observações
Existem vários casos em que o compilador C# trata a ref como implicitamente scoped - em que o compilador não permite que o ref escape do método.
Por exemplo:
-
thisporstructexemplo, métodos. -
refparâmetros que se referem aref structtipos. -
outparâmetros.
Este atributo é usado nas situações em que o ref deverá ser autorizado a escapar.
Aplicar este atributo, de qualquer forma, afeta os consumidores da API aplicável. É necessário que os autores da API compreendam as implicações ao longo da vida de aplicar este atributo e como pode impactar os seus utilizadores.
<Formato Type="Texto/Markdown">
Esta característica é especialmente reconhecida pelo tempo de execução. O aumento ECMA-335 III.1.7.7 define restrições sobre IL válido que faz referência a este atributo. Por exemplo, quando este atributo é aplicado a um método de instância de um tipo de valor, o this argumento pode escapar ao método. Quando o atributo está ausente, um compilador otimizador pode confiar em this não escapar para otimizar ainda mais certos padrões de código, como eliminar o boxing. Para mais informações, consulte o Adendo da Especificação CLI ECMA-335, Sec. III.1.7.7 ("Restrições de opt-in").
Como o tempo de execução depende deste atributo, não pode ser removido de uma assembleia. As restrições definidas pelo augment III.1.7.7 aplicam-se apenas quando o <atributo> xref:System.Runtime.CompilerServices.RefSafetyRulesEstá presente no módulo, pelo que este atributo tem o seu efeito documentado apenas num módulo que também está anotado com 'RefSafetyRulesAttribute'.
</format>
Construtores
| Name | Descrição |
|---|---|
| UnscopedRefAttribute() |
Inicializa uma nova instância da UnscopedRefAttribute classe. |
Propriedades
| Name | Descrição |
|---|---|
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
Métodos
| Name | Descrição |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |