Casa Sviluppo Quali sono gli attributi direzionali in c? - definizione da techopedia

Quali sono gli attributi direzionali in c? - definizione da techopedia

Sommario:

Anonim

Definizione - Cosa significano gli attributi direzionali?

Gli attributi direzionali, in C #, sono tag usati per specificare i parametri del metodo oggetto con informazioni relative al flusso direzionale di dati tra il chiamante e il chiamante.


Gli attributi direzionali controllano il marshalling - dove un oggetto è preparato per il trasferimento attraverso un'applicazione o il limite del processo - della direzione del parametro del metodo e dei valori di ritorno. Gli attributi direzionali vengono applicati per modificare il marshalling di runtime durante la comunicazione del codice gestito, che viene eseguito da Common Language Runtime (CLR), e del codice non gestito, che viene eseguito al di fuori del controllo del CLR.

Techopedia spiega gli attributi direzionali

InAttribute e OutAttribute sono i due attributi direzionali C # utilizzati per mappare gli attributi IDL (Interface Definition Language) del componente oggetto modello (COM). InAttribute mappa a, e OutAttribute mappa a. La firma del metodo gestito restituisce il valore in una libreria dei tipi. È essenziale specificare l'attributo direzionale corretto per i parametri del metodo, in modo che la libreria dei tipi di esportazione imposti correttamente i bit In / Out.


Applicando InAttribute e OutAttribute in array e tipi formattati di non Blittable (che non hanno una rappresentazione di memoria gestita e non gestita comune), il chiamante vede cambiamenti di chiamata. Gli attributi direzionali applicati a questi tipi riducono le copie non necessarie durante il marshalling.


In C #, InAttribute e OutAttribute sono utilizzati in tre forme con due parole chiave durante la comunicazione tra chiamante e chiamata, come segue:

  • "out" - Implica
  • "ref" - Implica,
  • (Nessuno specificato) - (per impostazione predefinita)

Le parole chiave out e ref sono utilizzate per tipi di valore e tipi di riferimento serializzabili. La parola chiave ref implica che il parametro è eseguito il marshalling in entrambe le direzioni e out implica il trasferimento dei dati del chiamante. Quando ref o out non vengono utilizzati, ciò implica che i dati vengano trasferiti alla chiamata.


Ad esempio, un'applicazione client .NET invia un valore di input a un metodo del componente COM, che calcola il risultato del valore di input e restituisce il risultato al client. Gli attributi direzionali possono essere applicati ai parametri del metodo che serve la richiesta indicando il tipo di marshalling richiesto per valore di input e risultato.


Gli attributi direzionali hanno le seguenti caratteristiche:

  • Opzionale e applicato ai parametri del metodo in fase di progettazione
  • Supportato solo per interoperabilità COM e invocazione piattaforma
  • InAttribute non può essere applicato a un parametro con una parola chiave out

Il marshaller di interoperabilità CLR fornisce il servizio di marshalling in fase di esecuzione gestendo gli argomenti di chiamata del metodo e restituendo valori tra memoria gestita e non gestita. Se gli attributi direzionali non sono definiti, il marshaler determina il flusso direzionale in base al tipo di parametro e al modificatore (se presenti). Il marshaler opera nel modo seguente:

  • Non sovrascrive i dati passati come parametro "In" dal codice non gestito. Pertanto, solo i dati di sola lettura, come i dati a cui si accede contemporaneamente, possono essere passati.
  • Durante il passaggio di oggetti - come stringhe di base o binarie (BSTR) - con allocazione di memoria stabilita, la sequenza di allocazione / deallocazione corretta viene seguita in base alle impostazioni In / Out.
Questa definizione è stata scritta nel contesto di C #
Quali sono gli attributi direzionali in c? - definizione da techopedia