OutAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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) |