Yordam Aşırı Yüklemesi (Visual Basic)

Bir yordamın aşırı yüklenmesi , aynı adı ama farklı parametre listelerini kullanarak birden çok sürümde tanımlanması anlamına gelir. Aşırı yüklemenin amacı, bir yordamın adla ayırt etmek zorunda kalmadan yakından ilişkili birkaç sürümünü tanımlamaktır. Bunu parametre listesini değiştirerek yaparsınız.

Kuralları Aşırı Yükleme

Bir yordamı aşırı yüklerken aşağıdaki kurallar uygulanır:

  • Aynı ad. Aşırı yüklenmiş her sürüm aynı yordam adını kullanmalıdır.

  • Farklı İmza. Aşırı yüklenmiş her sürüm, aşağıdakilerden en az birindeki diğer tüm aşırı yüklenmiş sürümlerden farklı olmalıdır:

    • Parametre sayısı

    • Parametrelerin sırası

    • Parametrelerin veri türleri

    • Tür parametrelerinin sayısı (genel yordam için)

    • Dönüş türü (yalnızca dönüştürme işleci için)

    Yordam adıyla birlikte, önceki öğeler topluca yordamın imzası olarak adlandırılır. Aşırı yüklenmiş bir yordamı çağırdığınızda, derleyici çağrının tanımla doğru eşleştiğinden denetlemek için imzayı kullanır.

  • İmzanın Parçası Olmayan Öğeler. İmzayı değiştirmeden bir yordamı aşırı yükleyemezsiniz. Özellikle, aşağıdaki öğelerden yalnızca bir veya daha fazlasını değiştirerek bir yordamı aşırı yükleyemezsiniz:

    • , Sharedve gibi Publicyordam değiştirici anahtar sözcükleriStatic

    • Parametre veya tür parametre adları

    • Tür parametresi kısıtlamaları (genel bir yordam için)

    • ve gibi ByRef parametre değiştirici anahtar sözcükleri Optional

    • Değer döndürip döndürmediği

    • Dönüş değerinin veri türü (dönüştürme işleci hariç)

    Önceki listedeki öğeler imzanın bir parçası değildir. Bunları aşırı yüklenmiş sürümler arasında ayrım yapmak için kullanamasanız da, bunları imzalarıyla düzgün bir şekilde ayırt edilen aşırı yüklenmiş sürümler arasında değiştirebilirsiniz.

  • Geç Bağlı Bağımsız Değişkenler. Geç bağlı nesne değişkenini aşırı yüklenmiş bir sürüme geçirmeyi planlıyorsanız, uygun parametreyi olarak Objectbildirmeniz gerekir.

Yordamın Birden Çok Sürümü

Müşterinin bakiyesine göre bir işlem göndermek için bir Sub yordam yazdığınızı ve müşteriye ada veya hesap numarasına göre başvurabilmek istediğinizi varsayalım. Buna uyum sağlamak için, aşağıdaki örnekte olduğu gibi iki farklı Sub yordam tanımlayabilirsiniz:

Sub postName(ByVal custName As String, ByVal amount As Single)
    ' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
    ' Insert code to access customer record by account number.
End Sub

Aşırı Yüklenmiş Sürümler

Bunun alternatifi tek bir yordam adını aşırı yüklemektir. Her parametre listesi için yordamın bir sürümünü tanımlamak için Overloads anahtar sözcüğünü aşağıdaki gibi kullanabilirsiniz:

Overloads Sub post(ByVal custName As String, ByVal amount As Single)
    ' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
    ' Insert code to access customer record by account number.
End Sub

Ek Aşırı Yüklemeler

veya Singleiçinde Decimal bir işlem tutarını da kabul etmek istiyorsanız, bu varyasyona izin vermek için daha fazla aşırı yükleme post yapabilirsiniz. Önceki örnekteki aşırı yüklemelerin her birine bunu yaptıysanız, tümü aynı ada ancak dört farklı imzaya sahip dört Sub yordama sahip olursunuz.

Aşırı Yüklemenin Avantajları

Bir yordamı aşırı yüklemenin avantajı, çağrının esnekliğindendir. Yukarıdaki örnekte bildirilen yordamı kullanmak post için, çağıran kod müşteri kimliğini veya Integerolarak String alabilir ve her iki durumda da aynı yordamı çağırabilir. Aşağıdaki örnekte bu gösterilmektedir:

Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
    accountNum = CInt(customer)
    Call post(accountNum, amount)
Catch
    Call post(customer, amount)
End Try

Ayrıca bkz.