Aracılığıyla paylaş


Out (Genel Değiştirici) (Visual Basic)

Genel türde parametreler için Out anahtar sözcük türünü değişkenle birlikte olduğunu belirtir.

Notlar

Kovaryans, genel parametre tarafından belirtilenden daha türetilmiş bir tür kullanmanıza olanak tanır.Bu varyant arabirimleri uygulayan sınıflar örtük dönüştürme ve temsilci türleri örtük dönüştürme için sağlar.

Daha fazla bilgi için bkz. Kovaryans ve Kontravaryans (C# ve Visual Basic).

Kurallar

Kullanabileceğiniz Out generic arabirimlerden ve temsilciler bir anahtar sözcük.

Genel bir arabirim türü parametresi aşağıdaki koşulları karşılayıp karşılamadığını değişkenle birlikte bildirilebilir:

  • Type parametresi arabirim yöntemleri dönüş türü yalnızca kullanılan ve bir tür yöntem bağımsız değişkenleri olarak kullanılmaz.

    [!NOT]

    Bu kuralın tek istisnası yoktur.Değişkenle birlikte arabiriminde karşıtı genel temsilci parametresi varsa, bu temsilci için genel bir tür parametresi olarak değişkenle birlikte türü kullanabilirsiniz.Değişkenle birlikte hakkında daha fazla bilgi ve karşıtı genel Temsilciler, Temsilcilerde Varyans (C# ve Visual Basic) ve İşlev ve Eylem Genel Temsilcileri için Varyans Kullanma (C# ve Visual Basic).

  • Tür parametresi için arabirim yöntemleri genel bir kısıtlama olarak kullanılmaz.

Yalnızca bir yöntemin dönüş türü olarak kullanılır ve kullanılan yöntem bağımsız değişkenleri için değil, genel bir temsilci, bir tür parametresi değişkenle birlikte olarak bildirilebilir.

Kovaryans ve contravariance baþvuru türleri için desteklenir, ancak değer tipleri için desteklenmez.

Visual Basic'te, temsilci türü belirtmeden değişkenle birlikte Arabirimlerdeki olaylar bildirimini yapamazsınız.Ayrıca, değişkenle birlikte arabirimleri sınıf, çeteleler ya da yapıları içe olamaz, ancak bunlar arabirimleri.

Davranış

Değişkenle birlikte tür parametresi içeren bir arabirim yöntemlerini türetilmiş türler tür parametresi tarafından belirtilen süreden daha dönmek etkinleştirir.Örneğin, çünkü içinde.net Framework 4, IEnumerable, t türü değişkenle birlikte, bir nesne atamak için IEnumerabe(Of String) türü bir nesne için IEnumerable(Of Object) herhangi bir özel dönüştürme yöntemleri kullanmadan yazın.

Değişkenle birlikte bir temsilci aynı tür, ancak daha türetilmiş bir genel tür parametresi ile başka bir temsilci atanabilir.

Örnek

Aşağıdaki örnek, bildirmek, genişletmek ve genel bir değişkenle birlikte arabirim uygulamak gösterilmiştir.Bunu da örtük dönüştürme değişkenle birlikte arabirimini uygulayan sınıflar için nasıl kullanılacağı gösterilmektedir.

' Covariant interface. 
Interface ICovariant(Of Out R)
End Interface 

' Extending covariant interface. 
Interface IExtCovariant(Of Out R)
    Inherits ICovariant(Of R)
End Interface 

' Implementing covariant interface. 
Class Sample(Of R)
    Implements ICovariant(Of R)
End Class 

Sub Main()
    Dim iobj As ICovariant(Of Object) = New Sample(Of Object)()
    Dim istr As ICovariant(Of String) = New Sample(Of String)()

    ' You can assign istr to iobj because 
    ' the ICovariant interface is covariant.
    iobj = istr
End Sub

Aşağıdaki örnek, bildirmek, baþlatmak ve bir değişkenle birlikte genel temsilciyi çağırmak gösterilmiştir.Ayrıca, kapalý dönüþtürme temsilci türleri için nasıl kullanabileceğinizi gösterir.

' Covariant delegate. 
Public Delegate Function DCovariant(Of Out R)() As R

' Methods that match the delegate signature. 
Public Shared Function SampleControl() As Control
    Return New Control()
End Function 

Public Shared Function SampleButton() As Button
    Return New Button()
End Function 

Private Sub Test()

    ' Instantiating the delegates with the methods. 
    Dim dControl As DCovariant(Of Control) =
        AddressOf SampleControl
    Dim dButton As DCovariant(Of Button) =
        AddressOf SampleButton

    ' You can assign dButton to dControl 
    ' because the DCovariant delegate is covariant.
    dControl = dButton

    ' Invoke the delegate.
    dControl()
End Sub

Ayrıca bkz.

Başvuru

In (Genel Değiştirici) (Visual Basic)

Kavramlar

Genel Arabirimlerde Varyans (C# ve Visual Basic)