Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

İsteğe Bağlı Parametreler[Visual Basic.Net]

BOMBFACTORY

Uzman Üye
Uzman Üye
Trabzonspor
Katılım
5 Ocak 2014
Mesajlar
3,333
Tepkime puanı
6
Puanları
136
Bildiğiniz gibi Visual Basic kodu içinde .NET Framework ile gelen bazı sınıfların metotları eksik parametre ile çağrılabilinmektedir. Başka bir deyişle bazı parametrelerin kullanılması isteğe bağlıdır. Derleyici eksik parametrelerin yerine varsayılan değerleri koymaktadır. Kendi hazırladığınız metotlarda isteğe bağlı parametrelerin olmasını istiyorsanız söz konusu parametreleri Optional olarak işaret edip varsayılan değerini aktarmanız gerekir. Bu konuda bilgi vermek için aşağıda verdiğim basit metodu hazırladım.

Kod:

Sub Topla(ByVal X As Long, ByVal Y As Long, ByVal Z As Long) Dim Sonuc As Long Sonuc = X + Y + Z TextBox1.Text = Sonuc.ToString() End Sub
Bu şekilde düzenlenen metot çağrılıp kendisine 2 bilgi gönderildiğinde hata meydana gelir. Çünkü Sub tipi bu metot 3 parametreye sahiptir. İçinde bulunduğunuz şartlara göre 3 yerine 2 sayıyı toplamak istiyorsanız 3. parametreyi isteğe bağlı olarak ayarlamalısınız.

Bir parametrenin isteğe bağlı olmasını istiyorsanız o parametrenin tanımına Optional anahtar kelimesini ekleyip varsayılan bir değer aktar*malısınız. Hazırladığım metodu aşağıdaki gibi değiştirerek 3. parametrenin varsayılan değerinin 0 olmasını sağladım. Bu durumda bu metot 2 parametre ile çağrıldığında 3. parametrenin 0 olduğu varsayılır.

Kod:

Sub Topla(ByVal X As Long,ByVal Y As Long, Optional ByVal Z As Long = 0) Dim Sonuc As Long Sonuc = X + Y + Z TextBox1.Text = Sonuc.ToString() End Sub
Aynı türden birden fazla parametreye sahip metotları hazırlarken ParamArray anahtar kelimesinden yararlanabilirsiniz. Bu anahtar kelimenin işlevini adım adım anlatmak için öncelikle aşağıdaki gibi basit bir metot hazırladım.

Kod:

Sub Toplam(ByVal Sayi1 As Integer, ByVal Sayi2 As Integer) Dim Sonuc As Integer Sonuc = Sayi1 + Sayi2 MessageBox.Show(Sonuc) End Sub
Bu şekilde hazırlanan metot aynı Class�ın içinden 2 parametreli olarak işletilebilir. Bu metot 2 yerinde 5-6 parametreye sahip olsaydı parantezlerin içinde bütün parametreler için değişken tanımlamak pratik olmamaya başlardı. Bu durumda metodun parametresinin dizi olması sağlanabilir. Bu amaçla Toplam() adını verdiğim metodu aşağıdaki gibi düzenledim.

Kod:

Sub Toplam(ByVal Sayilar As Integer()) Dim Sonuc As Integer For i As Integer = 0 To (Sayilar.Length - 1) Sonuc = Sonuc + Sayilar(i) Next MessageBox.Show(Sonuc) End Sub
Bu metottan yararlanarak kaç Integer değer toplanmak isteniyorsa önce o sayıda elemana sahip bir dizi değişken tanımlanıp bu metoda parametre olarak verilmelidir. Bu metodu nasıl kullandığımı aşağıda görebilirsiniz.

Kod:

Dim dizi(3) As Integer dizi(0) = 100 dizi(1) = 200 dizi(2) = 300 dizi(3) = 400 Toplam(dizi)
Her ne kadar yukarıda yerli programcılık kitapları yazanlar tarafından kapatılmış yani register edilmiş(!) sayi1, sayi2 ve dizi�yi değişken adı olarak kullanmış olsam bile risk almamanızı ve bu değişkenlere İngilizce adlar vermenizi önermek isterim.

Gördüğünüz gibi her iki yöntem de pratik değildir. Birincisinde aynı tipte çok sayıda para*metre tanımlamak, ikincisinde ise bilgileri dizi değişkene aktarmak gerekmektedir. ParamArray anahtar kelimesi sayesinde bu iki yöntemin zahmetli yanları giderilmektedir. Yukarıda Toplam() adını verdiğim metodun ParamArray kullanılmış halini aşağıda verdim.

Kod:

Sub Toplam(ByVal ParamArray Sayilar() As Integer) Dim Sonuc As Integer = 0 For Each i As Integer In Sayilar Sonuc = Sonuc + i Next MessageBox.Show(Sonuc) End Sub
Parametrenin adından önce ParamArray deyimine yer vermekle aslında söz konusu parametrenin dizi değişken olduğu işaret edilmektedir. Zaten değişken adının sonuna paran*tezler �()� eklenerek söz konusu değişkenin dizi olması sağlanmaktadır. Bu sayede bu metot Integer tipindeki dizi değişkenleri parametre olarak alabilir. Bu nedenle metot aşağıdaki gibi işletilebilir.

Kod:

Dim dizi(2) As Integer dizi(0) = 100 dizi(1) = 200 dizi(2) = 300 Toplam(dizi)
Tabi hemen itiraz edeceksiniz ve soracaksınız, ParamArray deyiminin bu şartlarda nasıl bir işlevi vardır? Haklısınız bu şartlarda bu metot yukarıda ParamArray�sız halinden farklı bir işleve sahip değilmiş gibi görünüyor. ParamArray deyiminin asıl işlevi bu metot işletilirken para*metrelerin dizi değişken olmasının şart olmamasıdır. Bu nedenle Toplam() adını verdiğim metot aşağıdaki gibi işletilebilir.

Kod:

Toplam(50, 150, 250)
Toplam() metoduna aynı tipte 3 bilgiyi parametre olarak verince ParamArray deyimi sayesinde geri planda 3 elemanlı bir dizi değişken tanımlanır ve parametre olarak verilen bu bilgiler dizi değişkenin elemanlarına aktarılır.
 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst