OutAttribute Osztály

Definíció

Azt jelzi, hogy az adatokat vissza kell helyezni a hívótól a hívóig.

public ref class OutAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class OutAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class OutAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)>]
type OutAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type OutAttribute = class
    inherit Attribute
Public NotInheritable Class OutAttribute
Inherits Attribute
Öröklődés
OutAttribute
Attribútumok

Példák

Az alábbi példa bemutatja, hogyan alkalmazhatja a InAttribute tömböt paraméterként áthaladó prototípust és OutAttribute platformhívást. Az irányattribútumok kombinációja lehetővé teszi, hogy a hívó lássa a hívó által végrehajtott módosításokat.

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
{
public:
    int structSize;
    String^ filter;
    String^ file;
    // ...
};

private ref class NativeMethods
{
public:

    // 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

Megjegyzések

Ezt az attribútumot a paraméterekre is alkalmazhatja.

Ez OutAttribute nem kötelező. Az attribútum csak com-interop és platformhívás esetén támogatott. Explicit beállítások hiányában az interop marshaler a paraméter típusa alapján feltételezi a szabályokat, hogy a paraméter hivatkozással vagy érték alapján van-e átadva, és hogy a típus titkos vagy nem titkos. Az osztály például mindig in/out értéket feltételez, StringBuilder és az érték által átadott sztringek tömbje in értéknek számít.

A csak kifelé irányuló viselkedés soha nem alapértelmezett marshaling viselkedés a paraméterek esetében. OutAttribute Az átadott érték- és hivatkozástípusok alkalmazhatók úgy, hogy az In/Out viselkedést csak out viselkedésre módosítja, ami egyenértékű a out C# kulcsszóval. Az érték szerint átadott tömbök például, alapértelmezés szerint csak in-only paraméterként, csak kívülre módosíthatók. A viselkedés azonban nem mindig ad elvárt szemantikát, ha a típusok teljes értékű elemeket vagy mezőket tartalmaznak, mert az interop marshaler rögzítést használ. Ha nem érdekli az adatok átengedése a hívónak, a csak kifelé irányuló marshaling jobb teljesítményt biztosíthat a nem titkos típusok számára.

InAttribute OutAttribute A tömbök és a formázott, nem titkos típusok együttes alkalmazása különösen hasznos. A hívók csak akkor látják az ilyen típusok módosításait, ha mindkét attribútumot alkalmazza. Mivel ezek a típusok másolást igényelnek a marshaling során, használhatja InAttribute és OutAttribute csökkentheti a szükségtelen másolatokat.

A marshaling viselkedésére OutAttribute gyakorolt hatásról további információt az Irányított attribútumok című témakörben talál.

Konstruktorok

Name Description
OutAttribute()

Inicializálja a OutAttribute osztály új példányát.

Tulajdonságok

Name Description
TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még