In (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 Kontravaryans (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 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

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

Kavramlar

Genel Arabirimlerde Varyans (C# ve Visual Basic)