OutAttribute 클래스


데이터가 수신자에서 호출자로 다시 마샬링되어야 한다는 것을 나타냅니다.Indicates that data should be marshaled from callee back to caller.

public ref class OutAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class OutAttribute : Attribute
type OutAttribute = class
    inherit Attribute
Public NotInheritable Class OutAttribute
Inherits Attribute


다음 예제에서는 배열을 매개 변수로 전달 하는 플랫폼 호출 프로토타입에 InAttributeOutAttribute를 적용 하는 방법을 보여 줍니다.The following example shows how to apply the InAttribute and OutAttribute to a platform invoke prototype that passes an array as a parameter. 방향 특성의 조합에는 호출자가 호출 수신자가 변경 내용을 볼 수 있습니다.The combination of directional attributes allows the caller to see the changes made by the callee.

using namespace System;
using namespace System::Runtime::InteropServices;

// Declare a class member for each structure element.

[StructLayout(LayoutKind::Sequential, CharSet = CharSet::Unicode)]
public ref class OpenFileName
    int structSize;
    String^ filter;
    String^ file;
    // ...

private ref class NativeMethods

    // Declare a managed prototype for the unmanaged function.

    [DllImport("Comdlg32.dll", CharSet = CharSet::Unicode)]
    static bool GetOpenFileName([In, Out]OpenFileName^ ofn);

void main() {}
using System.Runtime.InteropServices;
using System;

// Declare a class member for each structure element.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class OpenFileName
    public int structSize = 0;
    public string filter = null;
    public string file = null;
    // ...

internal static class NativeMethods
    // Declare a managed prototype for the unmanaged function.
    [DllImport("Comdlg32.dll", CharSet = CharSet.Unicode)]
    internal static extern bool GetOpenFileName([In, Out] OpenFileName ofn);

public class MainMethod
    static void Main()
    { }
Imports System.Runtime.InteropServices

' Declare a class member for each structure element.
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Class OpenFileName

    Public structSize As Integer = 0
    Public filter As String = Nothing
    Public file As String = Nothing
    ' ...

End Class

Friend Class NativeMethods
    ' Declare managed prototype for the unmanaged function.
    Friend Declare Unicode Function GetOpenFileName Lib "Comdlg32.dll" (
       <[In](), Out()> ByVal ofn As OpenFileName) As Boolean
End Class

Public Class App
    Public Shared Sub Main()

    End Sub
End Class


매개 변수를이 특성을 적용할 수 있습니다.You can apply this attribute to parameters.

OutAttribute은 선택적입니다.The OutAttribute is optional. 특성은 COM interop에 대 한 지원 및 플랫폼만 호출 합니다.The attribute is supported for COM interop and platform invoke only. 명시적 설정이 없을 경우, interop 마샬러는 규칙 기반으로 매개 변수 형식, 값 또는 참조로 매개 변수를 전달 하는 했는지 여부 및 blittable 또는 비 blittable 형식 인지 가정 합니다.In the absence of explicit settings, the interop marshaler assumes rules based on the parameter type, whether the parameter is passed by reference or by value, and whether the type is blittable or non-blittable. 예를 들어 StringBuilder 클래스는 항상 In/Out으로 간주 되며, 값으로 전달 되는 문자열의 배열은에 있는 것으로 간주 됩니다.For example, the StringBuilder class is always assumed to be In/Out and an array of strings passed by value is assumed to be In.

외부 전용 동작 마샬링 동작 매개 변수에 대 한 기본값 아닙니다.Out-only behavior is never a default marshaling behavior for parameters. 참조로 전달 되는 값 및 참조 형식에 OutAttribute를 적용 하 여의 out 키워드를 사용 하는 것과 동일한 Out 전용 동작으로 변경할 수 있습니다 C#.You can apply the OutAttribute to value and reference types passed by reference to change In/Out behavior to Out-only behavior, which is equivalent to using the out keyword in C#. 예를 들어, 기본적으로에서 전용 매개 변수를 마샬링할 값으로 전달 된 배열 아웃 전용으로 변경할 수 있습니다.For example, arrays passed by value, marshaled as In-only parameters by default, can be changed to Out-only. 그러나 동작을 제공 하지 않는 경우도 예상된 의미 체계 모두 blittable 요소를 포함 하는 형식 또는 고정 interop 마샬러를 사용 하기 때문에 필드.However, the behavior does not always provide expected semantics when the types include all-blittable elements or fields because the interop marshaler uses pinning. 호출 수신자에 데이터를 전달 하는 방법에 대 한 중요 하지 않은 경우 외부 전용 마샬링 비 blittable 형식에 대 한 더 나은 성능을 제공할 수 있습니다.If you do not care about passing data into the callee, Out-only marshaling can provide better performance for non-blittable types.

배열 및 형식이 지정 되지 않은 비 blittable 형식에 적용 하는 경우 InAttributeOutAttribute를 결합 하는 것이 특히 유용 합니다.Combining the InAttribute and OutAttribute is particularly useful when applied to arrays and formatted, non-blittable types. 호출자가 두 특성을 적용 하는 경우에 호출 수신자가 이러한 형식에 변경 내용을 참조 하세요.Callers see the changes a callee makes to these types only when you apply both attributes. 이러한 형식은 마샬링을 수행 하는 동안 복사 해야 하므로 InAttributeOutAttribute를 사용 하 여 불필요 한 복사본을 줄일 수 있습니다.Since these types require copying during marshaling, you can use InAttribute and OutAttribute to reduce unnecessary copies.

마샬링 동작에 대 한 OutAttribute 효과에 대 한 자세한 내용은 방향 특성을 참조 하세요.For more information on the effect of OutAttribute on marshaling behavior, see Directional Attributes.



OutAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the OutAttribute class.



파생 클래스에서 구현될 때 이 Attribute의 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(다음에서 상속됨 Attribute)



이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(다음에서 상속됨 Attribute)

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(다음에서 상속됨 Attribute)

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(다음에서 상속됨 Attribute)

파생된 클래스에서 재정의할 경우,이 인스턴스가 지정된 된 개체와 같은지 여부를 나타내는 값을 반환 합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(다음에서 상속됨 Attribute)

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(다음에서 상속됨 Attribute)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보