OutAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Indique que les données doivent être marshalées depuis l'appelé vers l'appelant.
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
- Héritage
- Attributs
Exemples
L’exemple suivant montre comment appliquer et InAttributeOutAttribute à un prototype d’appel de plateforme qui passe un tableau en tant que paramètre. La combinaison d’attributs directionnels permet à l’appelant de voir les modifications apportées par l’appelé.
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
Remarques
Vous pouvez appliquer cet attribut aux paramètres.
est OutAttribute facultatif. L’attribut est pris en charge pour l’interopérabilité COM et l’appel de plateforme uniquement. En l’absence de paramètres explicites, le marshaleur d’interopérabilité suppose des règles basées sur le type de paramètre, si le paramètre est passé par référence ou par valeur, et si le type est blittable ou non blittable. Par exemple, la StringBuilder classe est toujours supposée être In/Out et un tableau de chaînes passées par valeur est supposé être In.
Le comportement out-only n’est jamais un comportement de marshaling par défaut pour les paramètres. Vous pouvez appliquer les types à valeur et référence passés par référence pour modifier le OutAttribute comportement d’entrée/sortie en comportement out-only, ce qui équivaut à utiliser le out
mot clé en C#. Par exemple, les tableaux passés par valeur, marshalés en tant que paramètres in-only par défaut, peuvent être modifiés en out-only. Toutefois, le comportement ne fournit pas toujours la sémantique attendue lorsque les types incluent des éléments ou des champs tous blittables, car le marshaleur d’interopérabilité utilise l’épinglage. Si vous ne vous souciez pas du passage de données dans l’appelé, le marshaling out-only peut fournir de meilleures performances pour les types non blittables.
La combinaison de InAttribute et OutAttribute est particulièrement utile lorsqu’elle est appliquée à des tableaux et à des types mis en forme non blittables. Les appelants voient les modifications apportées par un appelé à ces types uniquement lorsque vous appliquez les deux attributs. Étant donné que ces types nécessitent une copie pendant le marshaling, vous pouvez utiliser InAttribute et OutAttribute pour réduire les copies inutiles.
Pour plus d’informations sur l’effet de sur le comportement de OutAttribute marshaling, consultez Attributs directionnels.
Constructeurs
OutAttribute() |
Initialise une nouvelle instance de la classe OutAttribute. |
Propriétés
TypeId |
Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute. (Hérité de Attribute) |
Méthodes
Equals(Object) |
Retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
GetHashCode() |
Retourne le code de hachage de cette instance. (Hérité de Attribute) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
IsDefaultAttribute() |
En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute) |
Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute) |