Aracılığıyla paylaş


(Genel değiştirici), (Visual Basic)

Genel türde parametreler için In anahtar sözcüğü, type parametresi karşıtı olduğunu belirtir.

Notlar

Contravariance, genel parametre tarafından belirtilenden daha az 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 Contravariance (C# ve Visual Basic).

Kurallar

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

Yalnızca bir yöntem bağımsız değişkenleri kullanılan türü ve kullanılan yöntemin dönüş türü değil, bir tür parametresi karşıtı bir genel arabirim veya temsilci olarak bildirilebilir.ByRefparametreleri olamaz değişkenle birlikte veya değişken karşıtı.

Kovaryans ve contravariance başvuru türleri için desteklenir ve değer türleri için desteklenmiyor.

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

Davranış

Arabirim türü parametresi tarafından belirtilen süreden daha az türetilmiþ tür bağımsız değişkenleri kabul etmek kendi yöntemleri karşıtı tür parametresi içeren bir arabirim sağlar.Örneğin, çünkü içinde.net Framework 4, IComparer<T> arabirimi, t türü karşıtı, bir nesne atamak için IComparer(Of Person) türü bir nesne için IComparer(Of Employee) , herhangi bir özel dönüştürme yöntemleri kullanmadan türü Person devralan Employee.

Aynı tür, ancak daha az türetilmiş bir genel tür parametresi ile başka bir temsilci karşıtı temsilci atanabilir.

Örnek

Aşağıdaki örnek, bildirmek, genişletmek ve karşıtı generic bir arabirim uygulamak gösterilmiştir.Ayrıca bu arabirimini uygulayan sınıflar için kapalý dönüþtürme nasıl kullanabileceğinizi gösterir.

' Contravariant interface.
Interface IContravariant(Of In A)
End Interface

' Extending contravariant interface.
Interface IExtContravariant(Of In A)
    Inherits IContravariant(Of A)
End Interface

' Implementing contravariant interface.
Class Sample(Of A)
    Implements IContravariant(Of A)
End Class

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

    ' You can assign iobj to istr, because
    ' the IContravariant interface is contravariant.
    istr = iobj
End Sub

Aşağıdaki örnek, bildirmek, baþlatmak ve karşıtı genel temsilciyi çağırmak gösterilmiştir.Ayrıca, nasıl dolaylı olarak bir temsilci türü dönüştürebilirsiniz gösterir.

' Contravariant delegate.
Public Delegate Sub DContravariant(Of In A)(ByVal argument As A)

' Methods that match the delegate signature.
Public Shared Sub SampleControl(ByVal control As Control)
End Sub

Public Shared Sub SampleButton(ByVal control As Button)
End Sub

Private Sub Test()

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

    ' You can assign dControl to dButton
    ' because the DContravariant delegate is contravariant.
    dButton = dControl

    ' Invoke the delegate.
    dButton(New Button())
End Sub

Ayrıca bkz.

Başvuru

(Genel değiştirici) çıkışı (Visual Basic)

Kavramlar

Varyans Generic arabirimlerden (C# ve Visual Basic)