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.
Genel yöntem olarak da adlandırılan genel yordam, en az bir tür parametresiyle tanımlanan bir yordamdır. Bu, çağıran kodun, yordamı her çağırışında veri türlerini kendi gereksinimlerine göre uyarlamasını sağlar.
Yordam, yalnızca genel bir sınıf veya genel bir yapı içinde tanımlanma özelliğiyle genel değildir. Genel olması için, yordamın gerekebilecek normal parametrelere ek olarak en az bir tür parametresi alması gerekir. Genel bir sınıf veya yapı, genel olmayan yordamlar içerebilir ve genel olmayan bir sınıf, yapı veya modül genel yordamlar içerebilir.
Genel bir yordam, tür parametrelerini normal parametre listesinde, dönüş türünde varsa ve yordam kodunda kullanabilir.
Tür Çıkarımı
Herhangi bir tür bağımsız değişkeni sağlamadan genel bir yordam çağırabilirsiniz. Bu şekilde çağırırsanız, derleyici prosedürün tür bağımsız değişkenlerine geçirmek için uygun veri türlerini belirlemeye çalışır. Buna tür çıkarımı denir. Aşağıdaki kod, derleyicinin String
türünü t
tür parametresine geçirmesi gerektiğini çıkardığını gösteren bir çağrıyı gösterir.
Public Sub testSub(Of t)(ByVal arg As t)
End Sub
Public Sub callTestSub()
testSub("Use this string")
End Sub
Derleyici, çağrınızın bağlamından tür bağımsız değişkenlerini çıkaramıyorsa hata mesajı verir. Böyle bir hatanın olası nedenlerinden biri dizi sıralaması uyuşmazlığıdır. Örneğin, normal bir parametreyi tür parametresi dizisi olarak tanımladığınız varsayın. Farklı bir dereceye (boyut sayısı) sahip bir dizi sağlayan genel yordamı çağırırsanız, uyuşmazlık tür çıkarımının başarısız olmasına neden olur. Aşağıdaki kod, iki boyutlu bir dizinin tek boyutlu bir dizi bekleyen bir yordama geçirildiği bir çağrıyı gösterir.
Public Sub demoSub(Of t)(ByVal arg() As t)
End Sub
Public Sub callDemoSub()
Dim twoDimensions(,) As Integer
demoSub(twoDimensions)
End Sub
Tür çıkarımını yalnızca tüm tür bağımsız değişkenlerini çıkararak kullanabilirsiniz. Tek bir tür bağımsız değişken sağladığınızda, bunların tümünü sağlamanız gerekir.
Tür çıkarımı yalnızca genel yordamlar için desteklenir. Genel sınıflarda, yapılarda, arabirimlerde veya temsilcilerde tür çıkarımı çağıramazsınız.
Örnek
Açıklama
Aşağıdaki örnek, dizideki belirli bir öğeyi bulmak için genel Function
bir yordam tanımlar. Bir tür parametresi tanımlar ve parametre listesindeki iki parametreyi oluşturmak için bunu kullanır.
Kod
Public Function findElement(Of T As IComparable) (
ByVal searchArray As T(), ByVal searchValue As T) As Integer
If searchArray.GetLength(0) > 0 Then
For i As Integer = 0 To searchArray.GetUpperBound(0)
If searchArray(i).CompareTo(searchValue) = 0 Then Return i
Next i
End If
Return -1
End Function
Yorumlar
Önceki örnek, searchValue
öğesini, searchArray
öğesinin her bir öğesiyle karşılaştırabilme yeteneğini gerektirir. Bu yeteneği garanti etmek için, T
tür parametresini IComparable<T> arabirimini uygulayacak şekilde kısıtlar. Kod, CompareTo için sağlanan tür bağımsız değişkeninin =
işleci desteklediğine dair bir garanti olmadığından, T
işleci yerine =
yöntemini kullanır.
Aşağıdaki kodla findElement
yordamını test edebilirsiniz.
Public Sub tryFindElement()
Dim stringArray() As String = {"abc", "def", "xyz"}
Dim stringSearch As String = "abc"
Dim integerArray() As Integer = {7, 8, 9}
Dim integerSearch As Integer = 8
Dim dateArray() As Date = {#4/17/1969#, #9/20/1998#, #5/31/2004#}
Dim dateSearch As Date = Microsoft.VisualBasic.DateAndTime.Today
MsgBox(CStr(findElement(Of String)(stringArray, stringSearch)))
MsgBox(CStr(findElement(Of Integer)(integerArray, integerSearch)))
MsgBox(CStr(findElement(Of Date)(dateArray, dateSearch)))
End Sub
Yukarıdaki çağrılarda MsgBox
sırasıyla "0", "1" ve "-1" görüntülenir.