Share via


OutAttribute Sınıf

Tanım

Verilerin çağırandan çağırana geri sıralanması gerektiğini gösterir.

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
Devralma
OutAttribute
Öznitelikler

Örnekler

Aşağıdaki örnek, bir diziyi InAttribute parametre olarak geçiren bir platform çağırma prototipine ve'nin OutAttribute nasıl uygulanacağını gösterir. Yön özniteliklerinin birleşimi, çağıranın çağrıyı yapan tarafından yapılan değişiklikleri görmesini sağlar.

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

Açıklamalar

Bu özniteliği parametrelere uygulayabilirsiniz.

OutAttribute isteğe bağlıdır. özniteliği yalnızca COM birlikte çalışma ve platform çağırma için desteklenir. Açık ayarların olmaması halinde birlikte çalışma sıralayıcısı parametre türüne, parametrenin başvuruyla mı yoksa değere göre mi geçirildiğini ve türün bölünebilir mi yoksa bölünebilir mi olduğunu temel alan kurallar varsayar. Örneğin, sınıfın StringBuilder her zaman In/Out olduğu varsayılır ve değer tarafından geçirilen dize dizisinin In olduğu varsayılır.

Yalnızca dış davranış hiçbir zaman parametreler için varsayılan bir hazırlama davranışı değildir. In/Out davranışını Yalnızca Dışarı davranışı olarak değiştirmek için başvuru tarafından geçirilen değere ve başvuru türlerine uygulayabilirsiniz OutAttribute . Bu, C# dilinde anahtar sözcüğünü out kullanmaya eşdeğerdir. Örneğin, değere göre geçirilen ve varsayılan olarak Yalnızca gelen parametreleri olarak sıralanan diziler Yalnızca Dışarı olarak değiştirilebilir. Ancak, birlikte çalışma sıralayıcısı sabitleme kullandığından, türler her zaman tüm blittable öğeleri veya alanları içerdiğinde davranış beklenen semantiği sağlamaz. Çağırana veri geçirmeyi önemserseniz, Yalnızca giden sıralama, bölünebilir olmayan türler için daha iyi performans sağlayabilir.

ve OutAttribute değerlerinin birleştirilmesiInAttribute, dizilere ve biçimlendirilmiş, bölünebilir olmayan türlere uygulandığında özellikle yararlıdır. Arayanlar, çağrıyı yapanın bu türlerde yaptığı değişiklikleri yalnızca her iki özniteliği de uyguladığınızda görür. Bu türler hazırlama sırasında kopyalama gerektirdiğinden, gereksiz kopyaları azaltmak için ve OutAttribute kullanabilirsinizInAttribute.

Hazırlama davranışının OutAttribute etkisi hakkında daha fazla bilgi için bkz . Yön Öznitelikleri.

Oluşturucular

OutAttribute()

OutAttribute sınıfının yeni bir örneğini başlatır.

Özellikler

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

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

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ayrıca bkz.