![18 栈的属性和buf地址增长方向是两个不同的概念](https://i.ytimg.com/vi/EbvO6F4NTbo/hqdefault.jpg)
コンテンツ
- 定義-方向属性とはどういう意味ですか?
- Microsoft AzureとMicrosoft Cloudの紹介|このガイドでは、クラウドコンピューティングとは何か、Microsoft Azureを使用してクラウドからビジネスを移行および実行する方法を学習します。
- Techopediaは方向属性を説明します
定義-方向属性とはどういう意味ですか?
C#の方向属性は、呼び出し元と呼び出し先の間のデータの方向の流れに関連する情報でオブジェクトメソッドパラメーターを指定するために使用されるタグです。
方向属性は、メソッドパラメータの方向と戻り値のマーシャリング(アプリケーションまたはプロセスの境界を越えた転送のためにオブジェクトが準備される場所)を制御します。方向属性は、共通言語ランタイム(CLR)によって実行されるマネージコードと、CLRの制御外で実行されるアンマネージコードを通信しながら、ランタイムマーシャリングを変更するために適用されます。
Microsoft AzureとMicrosoft Cloudの紹介|このガイドでは、クラウドコンピューティングとは何か、Microsoft Azureを使用してクラウドからビジネスを移行および実行する方法を学習します。
Techopediaは方向属性を説明します
InAttributeとOutAttributeは、コンポーネントオブジェクトモデル(COM)インターフェイス定義言語(IDL)属性にマップするために使用される2つのC#方向属性です。 InAttributeはにマップし、OutAttributeはにマップします。マネージメソッドシグネチャの戻り値は、タイプライブラリにマップされます。エクスポートタイプライブラリがIn / Outビットを正しく設定するために、メソッドパラメーターに正しい方向属性を指定することが不可欠です。
InAttributeおよびOutAttributeを配列およびフォーマットされた非blittable型(共通のマネージドおよびアンマネージドメモリ表現を持たない)に適用することにより、呼び出し元は呼び出し先の変更を確認します。これらのタイプに方向属性を適用すると、マーシャリング中の不要なコピーが削減されます。
C#では、InAttributeとOutAttributeは、次のように、発信者と着信者の通信中に2つのキーワードを持つ3つの形式で使用されます。
- 「out」–暗黙
- "ref" –暗黙、
- (指定なし)–(デフォルト)
outおよびrefキーワードは、値型およびシリアル化可能な参照型に使用されます。 refキーワードは、パラメーターが両方向にマーシャリングされることを意味し、outは呼び出し先データ転送を意味します。 refまたはoutが使用されていない場合、これはデータが呼び出し先に転送されることを意味します。
たとえば、.NETクライアントアプリケーションは、COMコンポーネントメソッドへの入力値を入力します。COMコンポーネントメソッドは、入力値の結果を計算し、その結果をクライアントに返します。入力値と結果に必要なマーシャリングタイプを示すことにより、要求を処理するメソッドのパラメーターに方向属性を適用できます。
方向属性には次の特性があります。
- オプションで、設計時にメソッドパラメーターに適用
- COM相互運用およびプラットフォーム呼び出しのみをサポート
- InAttributeはoutキーワードを持つパラメーターに適用できません
CLR相互運用マーシャラーは、メソッド呼び出しの引数を処理し、マネージメモリとアンマネージメモリ間の値を返すことにより、実行時にマーシャリングサービスを提供します。方向属性が定義されていない場合、マーシャラーはパラメータータイプと修飾子(存在する場合)に基づいて方向フローを決定します。マーシャラーは次のように動作します。
- アンマネージコードから "In"パラメーターとして渡されたデータは上書きされません。したがって、同時にアクセスされるデータなどの読み取り専用データのみが渡されます。
- メモリ割り当てが確立されたオブジェクト(基本またはバイナリ文字列(BSTR)など)を渡す間、In / Out設定に従って適切な割り当て/割り当て解除シーケンスが実行されます。