Afficher en anglais

Partage via


OutAttribute Classe

Définition

Indique que les données doivent être marshalées depuis l'appelé vers l'appelant.

C#
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class OutAttribute : Attribute
C#
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class OutAttribute : Attribute
Héritage
OutAttribute
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é.

C#
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()
    { }
}

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)

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Voir aussi