![Image Annotation Tutorial - V7 AI Academy](https://i.ytimg.com/vi/v90norZUy58/hqdefault.jpg)
Contente
- Definição - O que significam Atributos direcionais?
- Uma introdução ao Microsoft Azure e Microsoft Cloud | Neste guia, você aprenderá sobre o que é a computação em nuvem e como o Microsoft Azure pode ajudá-lo a migrar e administrar seus negócios a partir da nuvem.
- Techopedia explica atributos direcionais
Definição - O que significam Atributos direcionais?
Atributos direcionais, em C #, são tags usados para especificar parâmetros do método de objeto com informações relacionadas ao fluxo direcional de dados entre o chamador e o chamado.
Atributos direcionais controlam a empacotamento - onde um objeto é preparado para transferência através de um aplicativo ou processo - dos parâmetros de direção e retorno dos parâmetros do método. Atributos direcionais são aplicados para modificar a empacotamento do tempo de execução durante a comunicação do código gerenciado, que é executado pelo Common Language Runtime (CLR) e do código não gerenciado, que é executado fora do controle do CLR.
Uma introdução ao Microsoft Azure e Microsoft Cloud | Neste guia, você aprenderá sobre o que é a computação em nuvem e como o Microsoft Azure pode ajudá-lo a migrar e administrar seus negócios a partir da nuvem.
Techopedia explica atributos direcionais
InAttribute e OutAttribute são os dois atributos direcionais de C # usados para mapear para os atributos de IDL (Interface Definition Language) dos modelos de objetos de componente (COM). InAttribute mapeia para e OutAttribute mapeia para. O valor de retorno da assinatura do método gerenciado é mapeado para em uma biblioteca de tipos. É essencial especificar o atributo direcional correto para os parâmetros do método, para que a biblioteca de tipos de exportação defina corretamente os bits de entrada / saída.
Ao aplicar InAttribute e OutAttribute em matrizes e tipos não-blittáveis formatados (que não possuem representação de memória gerenciada e não gerenciada comum), o chamador vê alterações nos chamados. Atributos direcionais aplicados a esses tipos reduzem cópias desnecessárias durante o empacotamento.
Em C #, InAttribute e OutAttribute são usados em três formulários com duas palavras-chave durante a comunicação de chamador e receptor, da seguinte maneira:
- "fora" - implica
- "ref" - implica,
- (Nenhum especificado) - (por padrão)
As palavras-chave out e ref são usadas para tipos de valor e tipos de referência serializáveis. A palavra-chave ref implica que o parâmetro seja empacotado em ambas as direções e out implica transferência de dados chamados. Quando ref ou out não são usados, isso implica que os dados são transferidos para o chamado.
Por exemplo, um aplicativo cliente .NET é um valor de entrada para um método de componente COM, que calcula o resultado do valor de entrada e retorna o resultado ao cliente. Atributos direcionais podem ser aplicados aos parâmetros do método que atende à solicitação, indicando o tipo de empacotamento necessário para o valor de entrada e o resultado.
Atributos direcionais têm as seguintes características:
- Opcional e aplicado aos parâmetros do método em tempo de design
- Suportado apenas para interoperabilidade e chamada de plataforma COM
- InAttribute não pode ser aplicado a um parâmetro com uma palavra-chave out
O empacotador de interoperabilidade CLR fornece serviço de empacotamento em tempo de execução, manipulando argumentos de chamada de método e retornando valores entre a memória gerenciada e a não gerenciada. Se os atributos direcionais não estiverem definidos, o empacotador determinará o fluxo direcional com base no tipo de parâmetro e no modificador (se houver). O empacotador opera da seguinte maneira:
- Ele não substitui os dados passados como um parâmetro "In" do código não gerenciado. Portanto, somente dados somente leitura, como dados acessados simultaneamente, podem ser transmitidos.
- Ao passar objetos - como cadeias básicas ou binárias (BSTR) - com alocação de memória estabelecida, a sequência adequada de alocação / desalocação é seguida de acordo com as configurações de Entrada / Saída.