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.
Visual Basic derleyicisi, bir yordam birkaç aşırı yüklenmiş sürümde tanımlandığında hangi aşırı yüklemeyi çağıracaklarına karar vermelidir. Aşağıdaki adımları uygulayarak karar verir:
- Erişilebilirlik. Çağrı kodunun onu çağırmasını engelleyen bir erişim seviyesine sahip olan herhangi bir aşırı yüklemeyi ortadan kaldırır.
- Parametre Sayısı. Çağrıda belirtilen parametre sayısından farklı olan aşırı yükleri ortadan kaldırır.
- Parametre Veri Türleri. Derleyici, örnek yöntemlerine uzantı yöntemlerine göre tercih verir. Eğer yordam çağrısını karşılamak için yalnızca genişleme dönüşümleri gerektiren bir örnek metot bulunursa, tüm genişletme yöntemleri iptal edilir. Derleyici yalnızca örnek yöntemi adaylarıyla devam eder. Böyle bir örnek yöntemi bulunmazsa, hem örnek hem de uzantı yöntemleriyle devam eder. Bu adımda, çağıran bağımsız değişkenlerin veri türlerinin, aşırı yüklemede tanımlanan parametre türlerine dönüştürülemediği her durumu ortadan kaldırır.
- Daraltıcı Dönüşümler. Çağrı bağımsız değişkeni türlerinden tanımlı parametre türlerine daraltma dönüşümü gerektiren herhangi bir aşırı yük durumunu ortadan kaldırır. Bu adım, tür denetim anahtarı (Seçenek Katı Deyimi)
OnveyaOffolduğunda gerçekleşir. - Minimum Genişletme Derleyici, kalan aşırı yüklemeleri çiftler halinde dikkate alır. Her çift için tanımlanan parametrelerin veri türlerini karşılaştırır. Eğer aşırı yüklemelerden birindeki tüm türler diğerindeki karşılık gelen türlere genişletilebiliyorsa, derleyici diğer aşırı yüklemeyi ortadan kaldırır. Yani, en az miktarda genişletme gerektiren aşırı yüklemeyi korur.
- Aşırı Yükleme Çözümleme Önceliği. Derleyici, herhangi bir aday yüklemesinde en yüksek OverloadResolutionPriorityAttribute değerinden daha düşük değere sahip tüm aşırı yüklemeleri kaldırır. Bu öznitelik olmayan tüm aşırı yüklemelere varsayılan sıfır değeri atanır.
- Tek Aday. Yalnızca bir aşırı yükleme kalana kadar çiftler halinde aşırı yüklemeleri göz önünde bulundurmaya devam eder ve bu aşırı yüklemeye yönelik çağrıyı çözümler. Derleyici aşırı yüklemeleri tek bir adaya indirgeyemezse bir hata oluşturur.
Aşağıdaki çizimde, fazla yüklenmiş bir sürüm kümesinden hangisinin çağrılacağını belirleyen işlem gösterilmektedir.
akış diyagramı
Aşağıdaki örnekte bu aşırı yükleme çözümleme işlemi gösterilmektedir.
Overloads Sub z(ByVal x As Byte, ByVal y As Double)
End Sub
Overloads Sub z(ByVal x As Short, ByVal y As Single)
End Sub
Overloads Sub z(ByVal x As Integer, ByVal y As Single)
End Sub
Dim r, s As Short
Call z(r, s)
Dim p As Byte, q As Short
' The following statement causes an overload resolution error.
Call z(p, q)
İlk çağrıda, ilk bağımsız değişkenin türü (Short) ilgili parametrenin türüne (Byte) daralttığı için derleyici ilk aşırı yüklemeyi ortadan kaldırır. Ardından, ikinci aşırı yüklemedeki (Short ve Single) her bağımsız değişken türü üçüncü aşırı yüklemede karşılık gelen türe genişletildiği için üçüncü aşırı yüklemeyi ortadan kaldırır (Integer ve Single). İkinci aşırı yükleme daha az genişletme gerektirir, bu nedenle derleyici bunu çağrı için kullanır.
İkinci çağrıda derleyici, daraltma işlemi temelinde aşırı yüklemelerin herhangi birini ortadan kaldıramaz. Bağımsız değişken türlerinin daha az genişletilmesiyle ikinci aşırı yüklemeyi çağırabildiğinden üçüncü aşırı yüklemeyi ilk çağrıdakiyle aynı nedenle ortadan kaldırır. Ancak, derleyici birinci ve ikinci aşırı yükleme arasında seçim yapamaz. Her biri, diğerinde karşılık gelen türe genişleyen bir tanımlı parametre türüne sahiptir (Byte'dan Short'e, ancak Single'den Double'e genişler). Bu nedenle derleyici bir aşırı yükleme çözümleme hatası oluşturur.
Aşırı yüklenmiş Optional ve ParamArray bağımsız değişkenleri
Bir prosedürün iki aşırı yükü, son parametrenin birinde İsteğe Bağlı, diğerinde ParamArray olacak şekilde aynı imzalara sahipse; derleyici, bu prosedüre yapılan çağrıyı aşağıdaki gibi çözümler:
| Eğer çağrı son bağımsız değişkeni sağlarsa | Derleyici, son parametreyi bildiren aşırı yükleme çağrısını çözümler. |
|---|---|
| Değer yok (argüman atlanmış) | Optional |
| Tek bir değer | Optional |
| Virgülle ayrılmış bir listede iki veya daha fazla değer | ParamArray |
| Herhangi bir uzunlukta bir dizi (boş bir dizi dahil) | ParamArray |
Ayrıca bkz.
- İsteğe Bağlı Parametreler
- Parametre Dizileri
- Metot Aşırı Yükleme
- 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
- İşlemleri Aşırı Yükleme Konuları
- Aşırı Yükleme
- Uzantı Yöntemleri