OutAttribute Třída

Definice

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

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 prototyp vyvolání platformy OutAttribute , který předá 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ů.

Je OutAttribute nepovinný. Atribut je podporován pouze pro volání zprostředkovatele komunikace modelu COM a platformy. Pokud neexistuje explicitní nastavení, zařazování zprostředkovatele komunikace předpokládá pravidla založená na typu parametru, zda je parametr předán odkazem nebo hodnotou, a zda je typ blitelný nebo nebližovatelný. Třída se například StringBuilder vždy předpokládá, že je in/Out a pole řetězců předaných hodnotou je předpokládán jako In.

Výchozí chování při zařazování parametrů není nikdy výchozím chováním při zařazování. Můžete použít OutAttribute u hodnot a odkazových typů předaných odkazem změnit chování typu In/Out na chování jen pro odchozí, což je ekvivalentní použití klíčového out slova v jazyce C#. Například pole předaná hodnotou, která jsou ve výchozím nastavení zařazována jako parametry jen pro uživatele, je možné změnit pouze na out-only. Chování však vždy neposkytuje očekávanou sémantiku, pokud typy obsahují všechny blitelné prvky nebo pole, protože zařazování zprostředkovatele komunikace používá připnutí. Pokud vás nezajímá předávání dat do volaných dat, může zařazování pouze odchozích dat poskytovat lepší výkon pro nefiltrovatelné typy.

Kombinace InAttribute a OutAttribute je obzvláště užitečná při použití u polí a formátovaných neformátovatelných typů. Volající vidí změny volané u těchto typů jenom v případech, 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 snížit nepotřebné kopie.

Další informace o vlivu OutAttribute na zařazování chová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 tento Attribute.

(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á aktuální instanci.

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

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

(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ří použádnou kopii aktuálního souboru Object.

(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 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é