Tabla de contenido:
- Definición: ¿Qué significan los atributos direccionales?
- Techopedia explica los atributos direccionales
Definición: ¿Qué significan los atributos direccionales?
Los atributos direccionales, en C #, son etiquetas que se utilizan para especificar los parámetros del método del objeto con información relacionada con el flujo direccional de datos entre el llamante y el llamante.
Los atributos direccionales controlan el cálculo de referencias, donde un objeto está preparado para la transferencia a través de una aplicación o límite de proceso, de la dirección del parámetro del método y los valores de retorno. Los atributos direccionales se aplican para modificar el cálculo de tiempo de ejecución mientras se comunica el código administrado, que se ejecuta mediante Common Language Runtime (CLR), y el código no administrado, que se ejecuta fuera del control del CLR.
Techopedia explica los atributos direccionales
InAttribute y OutAttribute son los dos atributos direccionales de C # utilizados para asignar los atributos del Lenguaje de definición de interfaz (IDL) del Modelo de objetos componentes (COM). InAttribute se asigna a, y OutAttribute se asigna a. El valor de retorno de la firma del método administrado se asigna a una biblioteca de tipos. Es esencial especificar el atributo direccional correcto para los parámetros del método, de modo que la biblioteca de tipos de exportación establezca correctamente los bits de entrada / salida.
Al aplicar InAttribute y OutAttribute en matrices y tipos formateados que no se pueden borrar (que no tienen una representación de memoria administrada y no administrada común), la persona que llama ve los cambios del destinatario. Los atributos direccionales aplicados a estos tipos reducen las copias innecesarias durante el cálculo de referencias.
En C #, InAttribute y OutAttribute se usan en tres formas con dos palabras clave durante la comunicación de la persona que llama y la persona que llama, de la siguiente manera:
- "fuera" - Implica
- "ref" - Implica,
- (Ninguno especificado) - (por defecto)
Las palabras clave out y ref se usan para tipos de valor y tipos de referencia serializables. La palabra clave ref implica que el parámetro está ordenado en ambas direcciones, y out implica transferencia de datos a la persona que llama. Cuando no se usan ref o out, esto implica que los datos se transfieren a la persona que llama.
Por ejemplo, una aplicación cliente .NET envía un valor de entrada a un método de componente COM, que calcula el resultado del valor de entrada y devuelve el resultado al cliente. Los atributos direccionales pueden aplicarse a los parámetros del método que atiende la solicitud indicando el tipo de cálculo requerido para el valor de entrada y el resultado.
Los atributos direccionales tienen las siguientes características:
- Opcional y aplicado a los parámetros del método en tiempo de diseño
- Compatible solo con interoperabilidad COM e invocación de plataforma
- InAttribute no se puede aplicar a un parámetro con una palabra clave out
El calculador de interoperabilidad de interoperabilidad CLR proporciona servicio de cálculo de referencias en tiempo de ejecución al manejar argumentos de llamada de método y valores de retorno entre memoria administrada y no administrada. Si los atributos direccionales no están definidos, el marshaler determina el flujo direccional en función del tipo de parámetro y el modificador (si corresponde). El Marshaler funciona de la siguiente manera:
- No sobrescribe los datos pasados como un parámetro "In" del código no administrado. Por lo tanto, solo se pueden pasar datos de solo lectura, como los datos a los que se accede simultáneamente.
- Al pasar objetos, como cadenas básicas o binarias (BSTR), con asignación de memoria establecida, se sigue la secuencia de asignación / desasignación adecuada de acuerdo con la configuración de entrada / salida.
