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

DirectCast ve TryCast Fonksiyonları

BOMBFACTORY

Uzman Üye
Uzman Üye
Trabzonspor
Katılım
5 Ocak 2014
Mesajlar
3,333
Tepkime puanı
6
Puanları
136
DirectCast işlev olarak CType fonksiyonunda olduğu gibi dönüşüm işleminde kullanılır. Ancak dönüşüm işlemi esnasında CType Visual Basic runtime helper rutinlerini kullanıp, DirectCast ise kullanmadığından dolayı, DirectCast Ctype fonksiyonuna göre daha hızlı çalışır. Yine CType fonksiyonunda olduğu gibi hata durumunda geriye InvalidCastException hatası döndürür. DirectCast fonksiyonu ile yapılan dönüştürme işleminde dönüştürme işlemi yapılacak olan verinin ilk tanımlandığı türün bilinmesi önemlidir. Çünkü dönüştürülecek olan verinin ilk tanımlandığı tür ile atanacağı verinin türü birbiri ile aynı olmalıdır. Aksi takdirde InvalidCastException hatası oluşacaktır. Genellikle object türünden diğer veri türlerine dönüşüm işlemlerinde kullanılır.
Örneğin;
Dim sayi As Integer = 123


Dim yazi1 As String = CType(sayi, String)


Dim yazi2 As String = DirectCast(sayi, String)
Şeklinde yazacağımız kod “Value of type ’Integer’ cannot be converted to ’String’.” hatasını verecektir. Çünkü yazi2 değişkeni yazı olmasına rağmen bu değişkene aktarılan sayı değişkeninin ilk olarak tanımlandığı tip integer olduğu için hata meydana gelmektedir.
Dim nesne As Object = 123


Dim yazi3 As String = CType(nesne, String)


Dim yazi4 As String = DirectCast(nesne, String)
Şeklinde yazacağımız kod ise hata vermeden çalışacaktır.


TryCast ise işlev olarak DirectCast ile aynı yapıya sahiptir. Ancak oluşan bir hata durumunda geriye hata döndürmek yerine boş değer (nothing) döndürür.
Örnek olarak bir form üzerindeki kontrollere erişerek onların özelliklerini değiştirecek bir uygulama yapalım. Form üzerine aşağıdaki resimde görüldüğü gibi 5 adet buton ve iki adet textbox nesnesi yerleştirelim.


Kodumuz şu şekilde olacak:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim sayi As Byte
For Each dugme As Control In Me.Controls
Dim btn As Button = TryCast(dugme, Button)
If btn Is Nothing Then
dugme.BackColor = Color.SteelBlue
dugme.Text = "deneme"
Else
btn.BackColor = Color.Aquamarine
sayi = sayi + 1
btn.Text = "Düğme" & sayi
End If
Next
End Sub
Kodumuzu çalıştırdığımızda form üzerindeki butonların rengi değiştirilerek üzerlerine Düğme1..Düğme5 şeklinde yazılar yazılacak, textbox nesnelerinin de rengi değiştirilerek üzerlerine deneme şeklinde yazı yazılacak.


Kodumuzda TryCast fonksiyonu ile form üzerindeki kontrolleri button nesnesine dönüştürmeye çalıştık. Eğer TryCast fonksiyonu hata üretmiyorsa o nesnenin button nesnesi olduğuna karar vererek button dizaynı ile ilgili kodları çalıştırıyoruz. Eğer dönüşüm sırasında dönüştürülmek istenen nesne button nesnesi değilse geriye nothing değeri döndürecektir. Bu durumda textbox dizaynı ile ilgili kodları çalıştırıyoruz.
 

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

Üst