Share via


OutAttribute クラス

呼び出し先から呼び出し元へ、データをマーシャリングすることを示します。

この型のすべてのメンバの一覧については、OutAttribute メンバ を参照してください。

System.Object
   System.Attribute
      System.Runtime.InteropServices.OutAttribute

<AttributeUsage(AttributeTargets.Parameter)>
NotInheritable Public Class OutAttribute   Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class OutAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Parameter)]
public __gc __sealed class OutAttribute : public Attribute
[JScript]
public
   AttributeUsage(AttributeTargets.Parameter)
class OutAttribute extends Attribute

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

この属性は、パラメータに適用できます。

OutAttribute はオプションです。この属性は、COM 相互運用、およびプラットフォーム呼び出しのときにだけ使用できます。明示的な設定がない場合、相互運用マーシャラは、パラメータの型 (パラメータが参照渡しか値渡しか、型が blittable か非 blittable か) に応じて規則を判断します。たとえば、 StringBuilder クラスは常に In/Out として扱われ、値渡しされた文字列の配列は In として扱われます。

Out のみの動作がパラメータの既定のマーシャリング動作となることはありません。参照渡しの値型または参照型に OutAttribute を適用することによって、In/Out の動作を Out のみの動作に変更できます。これは、C# で out キーワードを使用することに相当します。たとえば、値渡しの配列 (既定で In のみのパラメータとしてマーシャリングされる) は、Out のみに変更できます。ただし、相互運用マーシャラは固定を使用するため、要素またはフィールドがすべて blittable の型の場合、この動作は期待されるセマンティクスを提供しないことがあります。データを呼び出し先に渡すかどうかが問題にならない場合、非 blittable 型については Out のみのマーシャリングの方がパフォーマンスに優れています。

InAttributeOutAttribute を組み合わせると、配列型および書式付きの非 blittable 型に適用する場合に、特に役立ちます。両方の属性を適用した場合にのみ、呼び出し元は、呼び出し先がこれらの型に対して加えた変更を参照できます。これらの型はマーシャリング中にコピーを要求するため、 InAttributeOutAttribute を使用して、不要なコピーを減らすことができます。

マーシャリングの動作に OutAttribute が与える影響の詳細については、「 方向属性 」を参照してください。

必要条件

名前空間: System.Runtime.InteropServices

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

OutAttribute メンバ | System.Runtime.InteropServices 名前空間 | InAttribute | StringBuilder | Blittable 型と非 Blittable 型