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 yordamı aşırı yüklerken, aşırı yüklenmiş her sürüm için farklı bir imza kullanmanız gerekir. Bu genellikle her sürümün farklı bir parametre listesi belirtmesi gerektiği anlamına gelir. Daha fazla bilgi için Yordam Aşırı Yükleme'deki "Farklı İmza" bölümüne bakın.
Farklı imzalara sahip olmaları koşuluyla bir Function yordamı bir Sub yordamla aşırı yükleyebilirsiniz ve tam tersini de yapabilirsiniz. İki aşırı yükleme, yalnızca birinin dönüş değeri olup olmamasıyla farklılık gösteremez.
Bir prosedürü aşırı yüklerken kullandığınız gibi, bir özelliği de aynı kısıtlamalarla aşırı yükleyebilirsiniz. Ancak, bir yordamı bir özellik ile aşırı yükleyemezsiniz veya tam tersi.
Aşırı Yüklenmiş Sürümlerin Alternatifleri
Özellikle bağımsız değişkenlerin varlığı isteğe bağlı olduğunda veya sayıları değişken olduğunda, bazen aşırı yüklenmiş sürümlere alternatifleriniz olabilir.
İsteğe bağlı bağımsız değişkenlerin tüm diller tarafından desteklenmediğini ve parametre dizilerinin Visual Basic ile sınırlı olduğunu unutmayın. Birkaç farklı dilde yazılmış koddan çağrılma olasılığı olan bir yordam yazıyorsanız, aşırı yüklenmiş sürümler en yüksek esnekliği sunar.
Aşırı Yüklemeler ve İsteğe Bağlı Parametreler
Çağıran kod isteğe bağlı olarak bir veya daha fazla bağımsız değişken sağlayabilir veya atlayabilirse, birden çok aşırı yüklenmiş sürüm tanımlayabilir veya isteğe bağlı parametreler kullanabilirsiniz.
Aşırı Yüklenmiş Sürümler Ne Zaman Kullanılır?
Aşağıdaki durumlarda bir dizi aşırı yüklenmiş sürüm tanımlamayı düşünebilirsiniz:
Yordam kodundaki mantık, çağıran kodun isteğe bağlı bir bağımsız değişken verip vermediğine bağlı olarak önemli ölçüde farklıdır.
Yordam kodu, çağıran kodun isteğe bağlı bir bağımsız değişken sağlayıp sağlamadığını güvenilir bir şekilde test edemez. Örneğin, çağıran kodun sağlaması beklenemeyen varsayılan bir değer için olası bir aday yoksa bu durum söz konusudur.
İsteğe Bağlı Parametreler Ne Zaman Kullanılır?
Aşağıdaki durumlarda bir veya daha fazla isteğe bağlı parametreyi tercih edebilirsiniz:
- Çağıran kod isteğe bağlı bir bağımsız değişken sağlamadığında gereken tek eylem, parametreyi varsayılan bir değere ayarlamaktır. Böyle bir durumda, bir veya daha fazla
Optionalparametreye sahip tek bir sürüm tanımlarsanız yordam kodu daha az karmaşık olabilir.
Daha fazla bilgi için bkz. İsteğe Bağlı Parametreler.
Aşırı Yüklemeler ve ParamArrays
Çağıran kod değişken sayıda bağımsız değişken geçirebildiğinde, birden çok aşırı yüklenmiş sürüm tanımlayabilir veya bir parametre dizisi kullanabilirsiniz.
Aşırı Yüklenmiş Sürümler Ne Zaman Kullanılır?
Aşağıdaki durumlarda bir dizi aşırı yüklenmiş sürüm tanımlamayı düşünebilirsiniz:
Çağıran kodun parametre dizisine hiçbir zaman az sayıdan fazla değer geçirmediğini biliyorsunuz.
Yordam kodundaki mantık, çağıran kodun kaç değer geçtiğine bağlı olarak önemli ölçüde farklıdır.
Çağıran kod farklı veri türlerinin değerlerini geçirebilir.
Parametre Dizisi Ne Zaman Kullanılır?
Aşağıdaki durumlarda ParamArray parametresiyle daha iyi sonuç alırsınız.
Çağıran kodun parametre dizisine kaç değer geçirebileceğini tahmin edemeyebilirsiniz ve çok büyük bir sayı olabilir.
Yordam mantığı, çağıran kodun geçtiği tüm değerleri yinelemeye ve temelde her değer üzerinde aynı işlemleri gerçekleştirmeye yardımcı olur.
Daha fazla bilgi için bkz . Parametre Dizileri.
İsteğe Bağlı Parametreler için Örtük Aşırı Yüklemeler
İsteğe bağlı parametresi olan bir yordam, biri isteğe bağlı parametreli, diğeri de parametresiz olmak üzere iki aşırı yüklenmiş yordama eşdeğerdir. Böyle bir yordamı, bunlardan herhangi biri için karşılık gelen bir parametre listesiyle aşırı yükleyemezsiniz. Aşağıdaki bildirimler bunu gösterir.
Overloads Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads.
' Overloads Sub q(ByVal b As Byte)
' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use.
' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
' The following overload uses a different signature and is valid.
Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
Birden fazla isteğe bağlı parametreye sahip bir yordam için, yukarıdaki örnektekine benzer bir mantıkla gelen örtük aşırı yüklemeler kümesi vardır.
ParamArray Parametresi İçin Gizli Aşırı Yüklemeler
Derleyici, çağıran kodun parametre dizisine geçişinde birbirinden farklı sonsuz sayıda aşırı yüklemeye sahip olmak için ParamArray parametresine sahip bir yordamı aşağıdaki gibi değerlendirir:
Çağıran kod için bir bağımsız değişken sağlamadığında için bir aşırı yükleme
ParamArrayÇağıran kod öğe türünün tek boyutlu bir dizisini sağladığında kullanılmak üzere bir aşırı yükleme
Her pozitif tamsayı için, çağıran kod bu sayıda bağımsız değişken sağladığında ve bu bağımsız değişkenlerin herbiri
ParamArraytüründe olduğunda, bir aşırı yükleme tanımlanır.
Aşağıdaki bildirimler bu örtük aşırı yüklemeleri gösterir.
Overloads Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.
Parametre dizisi için tek boyutlu bir dizi alan bir parametre listesiyle böyle bir prosedürü aşırı yükleyemezsiniz. Ancak, diğer örtük aşırı yüklemelerin imzalarını kullanabilirsiniz. Aşağıdaki bildirimler bunu gösterir.
' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)
Aşırı Yüklemeye Alternatif Olarak Türsüz Programlama
Çağıran kodun bir parametreye farklı veri türleri geçirmesine izin vermek istiyorsanız, alternatif bir yaklaşım türüz programlamadır. Tür denetimi anahtarını Off olarak, ya Option Strict Deyimi ya da -optionstrict derleyici seçeneğiyle ayarlayabilirsiniz. Ardından parametrenin veri türünü bildirmeniz gerekmez. Ancak bu yaklaşımın aşırı yüklemeyle karşılaştırıldığında aşağıdaki dezavantajları vardır:
Türüz programlama daha az verimli yürütme kodu üretir.
İşlem, kendisine aktarılması beklenen her veri türü için test etmelidir.
Çağıran kod yordamın desteklemediği bir veri türü geçirirse derleyici hata sinyali veremez.
Ayrıca bakınız
- Prosedürler
- Prosedür Parametreleri ve Bağımsız Değişkenleri
- Sorun Giderme Prosedürleri
- Nasıl Yapılır: Bir Yordamın Birden Çok Sürümünü Tanımlama
- Nasıl Yapılır: Aşırı Yüklenmiş Prosedür Çağırma
- Nasıl yapılır: İsteğe Bağlı Parametreler Alan Bir Yordamı Aşırı Yüklemek
- Nasıl Yapılır: Belirsiz Sayıda Parametre Alan Bir Yordamı Aşırı Yükleme
- Aşırı Yükleme Çözümü
- Aşırı Yükleme