UnscopedRefAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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:
-
thisparastructmétodos de instancia. -
refparámetros que hacen referencia a tipos deref struct. - 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) |