Değişkenlerin tiplerini öğrenmek için GetType ve bu metodla birlikte TypeOf metodu kullanılabilir. GetType metodu ile direkt olarak değişkenin tipi öğrenilebilecekken, TypeOf metodu ile bir değişkenin belirtilen veri türüne ait olup olmadığı belirlenebilir.

1)GetType Metodu

Herhangi bir değişkenin tipini öğrenebilmek için GetType metodundan faydalanılır. GetType metodunun ürettiği değer Type türünden olduğu için herhangi bir string değişkene aktarılamaz. ToString( ) metodu kullanılarak string türüne dönüştürüldükten sonra kullanılabilir.

 Konu ile ilgili bir örnek uygulama yapalım. Örneğimizde değişkenlerin tipini belirtmeden değer ataması yapalım. Değişkenlere içerdikleri değerlere C#  tarafından otomatik olarak tip ataması yapılmaktadır. GetType metodu ile bu değişkenin tipini öğrenerek ToString metodu üretilen değeri string değere dönüştürüp mesaj penceresi içerisinde görüntüleyeceğiz.

Örneğimizin kodu aşağıdaki gibi olacak;

private void btnDegiskenTipi_Click(object sender, EventArgs e)

{

   var isim = "Sümeyye AKTAŞ";

   MessageBox.Show (isim.GetType().ToString() ); 

           

   var yas = 5;

   MessageBox.Show(yas.GetType().ToString());

 

   var ondalık_sayı = 12.4;

   MessageBox.Show(ondalık_sayı.GetType().ToString());

  

   var mantıksal_degisken = true;

   MessageBox.Show(mantıksal_degisken.GetType().ToString());

}

 

Kodumuzu çalıştırdığımızda mesaj penceresi içerisinde sıra ile

System.String

System.Int32

System.Double

System.Boolean

İfadelerinin görüntülendiğini görürüz.

 

2) TypeOf Metodu

Herhangi bir değişkenin tipinin bir değişken türüne ait olup olmadığını anlamak amacı ile TypeOf metodundan faydalanılır.

Konu ile ilgili bir örnek uygulama yapalım.

private void Form1_Load(object sender, EventArgs e)

{

    var ondalık_sayı = 12.4;

    if (ondalık_sayı.GetType() == typeof(byte))

    { 

        MessageBox.Show ("Değişken türü byte"); 

    } 

        else

    {

        MessageBox.Show("Değişken türü byte değil"); 

    }

}

 

Örneğimizde ondalık_sayı isimli değişkenin içeriğinin byte türü olup olmadığını typeof(byte) metodu ile kontrol etmekteyiz. Atanan değer ondalık sayı olduğundan dolayı değişkenin türü double olacaktır. Dolayısı ile kodumuzu çalıştırdığımızda "Değişken türü byte değil" sonucunu görüntüleyecektir.
Etiketler : Değişkenler GetType TypeOf
Kategoriler : C#
Yorumlar : 1 Yorum Yorum Yaz

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 yandaki resimde görüldüğü gibi 5 adet buton ve iki adet textbox nesnesi yerleştirelim.

TryCast Tasarım

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.

TryCast Sonuc

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.

Etiketler : Değişkenler DirectCast TryCast
Kategoriler : VB.Net
Yorumlar : 0 Yorum Yorum Yaz
Arama
  Ara
Takvim
<September 2010>
SMTWTFS
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
Tag Bulutu