Visual Basic'de Genel Yordamlar
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 Çıkarma
Herhangi bir tür bağımsız değişkeni sağlamadan genel bir yordam çağırabilirsiniz. Bu şekilde çağırırsanız, derleyici yordamı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 tür parametresine t
tür String
geçirmesi gerektiğini çıkardığı 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, tür bağımsız değişkenlerini çağrınızın bağlamından çıkaramıyorsa bir hata bildirir. 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ı yalnızca tüm tür bağımsız değişkenlerini atlayarak çağırabilirsiniz. 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
Açıklamalar
Yukarıdaki örnek, öğesinin her öğesiyle searchArray
karşılaştırma searchValue
yapabilmeyi gerektirir. Bu özelliği garanti etmek için, arabirimi uygulamak için tür parametresini T
kısıtlar IComparable<T> . için sağlanan T
bir tür bağımsız değişkeninin işlecini desteklediğinin =
=
garantisi olmadığından kod işleci yerine yöntemini kullanırCompareTo.
Yordamı aşağıdaki kodla test findElement
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.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin