UnscopedRefAttribute Clase

Definición

Se usa para indicar un escape byref y no tiene ámbito.

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
Herencia
UnscopedRefAttribute
Atributos

Comentarios

Hay varios casos en los que el compilador de C# trata como ref implícitamente scoped , donde el compilador no permite ref que escape el método .

Por ejemplo:

  1. this para struct métodos de instancia.
  2. ref parámetros que hacen referencia a tipos de ref struct.
  3. parámetros out.

Este atributo se usa en esas instancias en las que se debe permitir el ref escape.

La aplicación de este atributo, en cualquier forma, afecta a los consumidores de la API aplicable. Es necesario que los autores de API comprendan las implicaciones de duración de la aplicación de este atributo y cómo podrían afectar a sus usuarios.

<format type="text/markdown">

El tiempo de ejecución reconoce especialmente este atributo. ECMA-335 augment III.1.7.7 define restricciones en il válidas que hacen referencia a este atributo. Por ejemplo, cuando este atributo se aplica a un método de instancia de un tipo de valor, el this argumento puede escapar del método . Cuando el atributo está ausente, un compilador de optimización puede confiar en this no escapar para optimizar aún más determinados patrones de código, como eliminar la conversión boxing. Para obtener más información, consulte el anexo de especificación de la CLI ecma-335, sec. III.1.7.7 ("Restricciones de participación").

Dado que el tiempo de ejecución se basa en este atributo, no se puede quitar de un ensamblado. Las restricciones definidas por augment III.1.7.7.7 solo se aplican cuando xref <:System.Runtime.CompilerServices.RefSafetyRulesAttribute está presente en el módulo, por lo que este atributo solo tiene su efecto documentado en un módulo que también está anotado con "RefSafetyRulesAttribute> ".

</format>

Constructores

Nombre Description
UnscopedRefAttribute()

Inicializa una nueva instancia de la clase UnscopedRefAttribute.

Propiedades

Nombre Description
TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Nombre Description
Equals(Object)

Devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Cuando se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se reemplaza en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a