Acasă Dezvoltare Care sunt atributele direcționale în c? - definiție din techopedia

Care sunt atributele direcționale în c? - definiție din techopedia

Cuprins:

Anonim

Definiție - Ce înseamnă atributele direcționale?

Atributele direcționale, în C #, sunt etichete utilizate pentru a specifica parametrii (parametrii) metodei obiectului, cu informații legate de fluxul direcțional de date între apelant și callee.


Atributele direcționale controlează marșul - unde un obiect este pregătit pentru transferul peste o aplicație sau un proces de graniță - a direcției și valorilor de returnare ale parametrului. Atributele direcționale sunt aplicate pentru a modifica marsupia de rulare în timp ce comunică codul gestionat, care este executat de Common Language Runtime (CLR) și codul neadministrat, care este executat în afara controlului CLR.

Techopedia explică atributele direcționale

InAttribute și OutAttribute sunt cele două atribute direcționale C # utilizate pentru a face mapare cu atributele de limbaj (COM) de interfață de definire a modelului de obiecte componente (ID). InAttribute hărți la, și OutAttribute hărți la. Harta valorii de întoarcere a semnăturii metodei gestionate într-o bibliotecă de tip. Este esențial să specificați atributul direcțional corect pentru parametrii metodei, astfel încât biblioteca de tip exportator să stabilească corect biții de intrare / ieșire.


Prin aplicarea InAttribute și OutAttribute în matricele și tipurile care nu sunt blittate formatate (care nu au o reprezentare comună administrată și neadministrată a memoriei), apelantul vede schimbări callee. Atributele direcționale aplicate acestor tipuri reduc copii inutile în timpul marșului.


În C #, InAttribute și OutAttribute sunt utilizate în trei forme cu două cuvinte cheie în timpul comunicării apelantului și callee, după cum urmează:

  • „afară” - Implica
  • "ref" - Implica,
  • (Nimeni specificat) - (implicit)

Cuvintele cheie out și ref sunt utilizate pentru tipuri de valoare și tipuri de referință serializabile. Cuvântul cheie ref implică faptul că parametrul este marcat în ambele direcții, iar ieșirea implică transferul de date callee. Atunci când nu sunt utilizate ref sau în afara, aceasta implică transferul de date către callee.


De exemplu, o aplicație client .NET trimite o valoare de intrare către o metodă a componentei COM, care calculează rezultatul valorii de intrare și returnează rezultatul clientului. Atributele direcționale pot fi aplicate parametrilor metodei care deservesc solicitarea, indicând tipul de marshaling necesar pentru valoarea și rezultatul de intrare.


Atributele direcționale au următoarele caracteristici:

  • Opțional și aplicat parametrilor metodei la momentul proiectării
  • Acceptat numai pentru interoptarea COM și pentru invocarea platformei
  • InAttribute nu poate fi aplicat unui parametru cu un cuvânt cheie de ieșire

Marshalerul de interoperabilitate CLR oferă un serviciu de marshaling în timpul rulării, tratând argumentele de apel ale metodei și valorile de retur între memoria gestionată și cea neadministrată. Dacă atributele direcționale nu sunt definite, marshalerul determină fluxul direcțional bazat pe tipul parametrului și modificatorul (dacă există). Mareșalul funcționează în felul următor:

  • Nu suprascrie datele transmise ca parametru "In" din codul neadministrat. Astfel, pot fi transmise doar date numai în citire, cum ar fi datele accesate simultan.
  • În timp ce treceți obiecte - cum ar fi șiruri de bază sau binare (BSTR) - cu alocare de memorie stabilită, secvența de alocare / deallocare corespunzătoare este urmată în conformitate cu setările In / Out.
Această definiție a fost scrisă în contextul C #
Care sunt atributele direcționale în c? - definiție din techopedia