Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir temsilciye bir yöntem atadığınızda, kovaryans ve ters değişken , bir temsilci türünü yöntem imzası ile eşleştirme esnekliği sağlar. Kovaryans, bir metodun temsilcide tanımlanandan daha fazla türetilmiş dönüş türüne sahip olmasına olanak tanır. Contravariance, temsilci türündekilerden daha az türetilmiş parametre türlerine sahip bir yönteme izin verir.
Örnek 1: Kovaryans
Açıklama
Bu örnek, temsilcilerin, temsilci imzasında belirtilen dönüş türlerinden türetilen dönüş türlerine sahip yöntemlerle nasıl kullanılabileceğini gösterir.
DogsHandler tarafından döndürülen veri türü, temsilcide tanımlanan Dogs türünden türetilen Mammals türündedir.
Kod
Class Mammals
End Class
Class Dogs
Inherits Mammals
End Class
Class Test
Public Delegate Function HandlerMethod() As Mammals
Public Shared Function MammalsHandler() As Mammals
Return Nothing
End Function
Public Shared Function DogsHandler() As Dogs
Return Nothing
End Function
Sub Test()
Dim handlerMammals As HandlerMethod = AddressOf MammalsHandler
' Covariance enables this assignment.
Dim handlerDogs As HandlerMethod = AddressOf DogsHandler
End Sub
End Class
Örnek 2: Kontravaryans
Açıklama
Bu örnek, temsilcilerin, parametre türleri temsilci imzasındaki parametre türünün temel türleri olan yöntemlerle nasıl kullanılabileceğini gösterir. Contravariance ile ayrı işleyiciler yerine tek bir olay işleyicisi kullanabilirsiniz. Aşağıdaki örnekte iki temsilci kullanılır:
KeyEventHandler Button.KeyDown olayının imzasını tanımlayan bir temsilci. İmzası:
Public Delegate Sub KeyEventHandler(sender As Object, e As KeyEventArgs)MouseEventHandler Button.MouseClick olayının imzasını tanımlayan bir temsilci. İmzası:
Public Delegate Sub MouseEventHandler(sender As Object, e As MouseEventArgs)
Örnek, bir EventArgs parametresine sahip olay işleyicisi tanımlar ve bunu hem Button.KeyDown hem Button.MouseClick olaylarını işlemek için kullanır. Bunu yapabilir çünkü EventArgs hem KeyEventArgs hem de MouseEventArgs için bir taban türdür.
Kod
' Event handler that accepts a parameter of the EventArgs type.
Private Sub MultiHandler(ByVal sender As Object,
ByVal e As System.EventArgs)
Label1.Text = DateTime.Now
End Sub
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
' You can use a method that has an EventArgs parameter,
' although the event expects the KeyEventArgs parameter.
AddHandler Button1.KeyDown, AddressOf MultiHandler
' You can use the same method
' for the event that expects the MouseEventArgs parameter.
AddHandler Button1.MouseClick, AddressOf MultiHandler
End Sub