Sdílet prostřednictvím


OutAttribute Třída

Definice

Označuje, že data by měla být zařazována z volaného zpět na volajícího.

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
Dědičnost
OutAttribute
Atributy

Příklady

Následující příklad ukazuje, jak použít InAttribute a OutAttribute na prototyp vyvolání platformy, který předává pole jako parametr. Kombinace směrových atributů umožňuje volajícímu zobrazit změny provedené volanou.

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

Poznámky

Tento atribut můžete použít u parametrů.

Hodnota OutAttribute je volitelná. Atribut je podporován pouze pro volání zprostředkovatele komunikace COM a platformy. Při absenci explicitního nastavení předpokládá zařazovač komunikace pravidla na základě typu parametru, zda je parametr předán odkazem nebo hodnotou a zda je typ blitelný nebo nerozbitelný. Například třída se vždy předpokládá, StringBuilder že je In/Out a pole řetězců předané hodnotou se předpokládá jako In.

Chování out-only nikdy není výchozím chováním zařazování parametrů. Můžete použít OutAttribute na typy hodnot a odkazů předané odkazem a změnit tak chování příchozího nebo odchozího chování na chování pouze odchozí, což je ekvivalentní použití klíčového out slova v jazyce C#. Například pole předaná podle hodnoty, která jsou ve výchozím nastavení zařazovaná jako pouze parametry In, je možné změnit na pouze odchozí. Toto chování však ne vždy poskytuje očekávanou sémantiku, pokud typy obsahují všechny prvky nebo pole, protože zařazovač interoperability používá připnutí. Pokud vás nezajímá předávání dat do volané, může zařazování out-only poskytnout lepší výkon pro nebližitelné typy.

Kombinace InAttribute a OutAttribute je zvlášť užitečná při použití u polí a formátovaných, nebližitelných typů. Volající uvidí změny, které volaný u těchto typů provede, jenom když použijete oba atributy. Vzhledem k tomu, že tyto typy vyžadují kopírování během zařazování, můžete použít InAttribute a OutAttribute ke snížení počtu nepotřebných kopií.

Další informace o vlivu OutAttribute na chování zařazování naleznete v tématu Směrové atributy.

Konstruktory

OutAttribute()

Inicializuje novou instanci OutAttribute třídy .

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také