4 - C# Kullanıcı Tanımlı Veri Türleri

MerryGo

Yeni üye
19 May 2021
48
15
Kullanıcı Tanımlı Veri Türleri
csharp-1200x600.png

Struct (Yapı):
Struct veri türü, farklı türlerden değişken tiplerini, özellikleri ve metotları bir çatı altında toplayarak gruplandırmak amacı ile kullanılan veri türü yapısıdır. Değer türünden oldukları için küçük miktarda verinin saklanmasında yüksek performans gösterirler. Yapının içerisindeki her eleman tanımlı olmalıdır. Bir Structın boyutu, içerisindeki tanımlı elemanların boyutunun toplamına eşittir.

Bir struct aşağıdaki gibi oluşur.
C#:
struct structAdi
{
          public degiskenTipi degiskenAdi;
}

Bu struct içersindeki elamana erişmek için ise;
C#:
structAdi nesne = new structAdi();
şeklinde bir nesne tanımayabiliriz.

örnek:
C#:
static void Main(string[] args)
{
          ogrenci ogrencik = new ogrenci();
          ogrencik.ad = "Ahmet";
          ogrencik.soyad = "Aslan";
          ogrencik.numara = 123;
          ogrencik.sinif = "11G";

          Console.WriteLine("Adı : {0}\nSoyadı : {1}\nNumarası : {2}\nSınıfı : {3}",
            ogrencik.ad, ogrencik.soyad,ogrencik.numara, ogrencik.sinif);

          Console.ReadLine();
}
struct ogrenci
{
          public string ad;
          public string soyad;
          public int numara;
          public string sinif;
}

Çıktı:
Adı : Ahmet
Soyadı : Aslan
Numarası : 123
Sınıfı : 11G

Struct içinde struct tanımlamakta mümkündür.
C#:
struct structAdi2
{
          public degiskenTipi degiskenAdi;
          struct structAdi2
        {
                   public degiskenTipi2 degiskenAdi2;
        }
}

Enum

Enum; birden fazla sabiti bir yapı altında toplamamızı sağlar.
Enum aşağıdaki gibi tanımlanır;
C#:
enum enumAdi
{
        sabit1,
        sabit2,
        sabit3,
        ...
        sabitn
}

Örnek olarak haftanın günlerini verebiliriz.

örnek:
C#:
enum Gunler
{
        Pazartesi,
        Salı,
        Çarşamba,
        Perşembe,
        Cuma,
        Cumartesi,
        Pazar
}

Enum yapısında sabitler 0 ile başlar, yani yukarıda gördüğünüz gibi 0. indexi Parazartesi, 6. indexi Pazardır.
IsDefined Metodu

Enum içerisinde bir sabitin tanımlı olup olmadığı bilgisini verir.
C#:
static void Main(string[] args)
{
          if (Gunler.IsDefined(typeof(Gunler), "Salı"))
        {
                  Console.WriteLine("Salı günü bulunmaktadır.");
        }
          else
        {
                  Console.WriteLine("Salı günü bulunmamaktadır.");
        }
}
enum Gunler
{
        Pazartesi,
        Salı,
        Çarşamba,
        Perşembe,
        Cuma,
        Cumartesi,
        Pazar
}
Enumdaki elemanlara erişim sağlamak

Enum içerisindeki elemanlara "(enumIsmi)elemanNumarası" şeklinde Erişim sağlayabiliriz.
Örnek:
C#:
static void Main(string[] args)
{
          int numara;
          Console.WriteLine("Gün numarasını giriniz :");
          numara = Convert.ToInt32(Console.ReadLine());
          Gunler gun;
          gun = (Gunler)numara;
          Console.WriteLine(gun.ToString());
          Console.ReadKey();
}
enum Gunler
{
        Pazartesi,
        Salı,
        Çarşamba,
        Perşembe,
        Cuma,
        Cumartesi,
        Pazar
}

GetName Metodu

Enum içideki bir elamana sayısal değeri aracılığı ile ulaşmamızı sağlar
Örnek:
C#:
static void Main(string[] args)
{
           Console.WriteLine(Enum.GetName(typeof(Gunler), 12));
           Console.ReadKey();
}
enum Gunler
{
            Pazartesi = 3,
            Salı = 9,
            Çarşamba = 33,
            Perşembe = 42,
            Cuma = 12,
            Cumartesi = 12,
            Pazar = 44
}

Çıktı:
Cuma

Not: Enum içerisinde birden fazla aynı değere sahip sabit varsa ilk sabiti döndürür.
GetNames Metodu

Enum içerisindeki elemanları string formatında bir dizinin içerisine saklamamızı sağlar.

Örnek:
C#:
static void Main(string[] args)
{
          foreach (string gunAdi in Enum.GetNames(typeof(Gunler)))
        {
                  Console.WriteLine(gunAdi);
        }
          Console.ReadKey();
}
enum Gunler
{
        Pazartesi = 3,
        Salı = 9,
        Çarşamba = 33,
        Perşembe = 42,
        Cuma = 12,
        Cumartesi = 12,
        Pazar = 44
}

Çıktı:
Pazartesi
Salı
Cumartesi
Cuma
Çarşamba
Perşembe
Pazar

Yukarıda "Enum.GetNames(typeof(Gunler))" koduyla Gunler enumunu bir dizi haline çevirdik ve foreach ile dizinin içerisindeki bütün değerleri yani günleri ekrana yazdırdık.
GetValues Metodu

Enum içerisindeki elemanların sayısal değerlerini bir dizi içinde saklamamız gerektiği zaman kullanırız.
Örnek:
C#:
static void Main(string[] args)
{
          foreach (int deger in Enum.GetValues(typeof(Gunler)))
        {
                  Console.WriteLine(deger);
        }
  
          Console.ReadKey();
}
 enum Gunler
{
        Pazartesi = 3,
        Salı = 9,
        Çarşamba = 33,
        Perşembe = 42,
        Cuma = 12,
        Cumartesi = 12,
        Pazar = 44
}

Çıktı:
3
9
33
42
12
12
44

Parse Metodu

Enum içerisindeki elemanların ismine veya aldığı değere erişmek için kullanırız.

Örnek:
C#:
static void Main(string[] args)
{
          Gunler gunAdi  = (Gunler)Enum.Parse(typeof(Gunler), "Cumartesi", true);
          Console.WriteLine("Cumartesinin değeri : " + gunAdi.ToString("D"));
          Console.ReadKey();
}
 enum Gunler
{
        Pazartesi = 3,
        Salı = 9,
        Çarşamba = 33,
        Perşembe = 42,
        Cuma = 12,
        Cumartesi = 12,
        Pazar = 44
}

Çıktı :
Cumartesinin değeri : 12


Boxıng ve Unboxing

Boxing
; değer türünden bir değişkeni referans türünden bir değişkene atama(aktarma) işlemidir.
Örnek:
C#:
static void Main(string[] args)
{
          int k = 333;
          object box;
          box = k;
  
          Console.WriteLine(k);
          Console.WriteLine(box);
          Console.ReadKey();
}

Çıktı :
333
333


Yukarıda değer türü k değişkenini, referans türü olan box değişkenine atadık.

Unboxing

Unboxing ise boxing'in tam tersidir, yani referans türü bir değişkeni, değer türü bir değişkene atama işlemidir.

Örnek:
C#:
static void Main(string[] args)
{
          int k;
          object box = 44;
          k = (int)box;
  
          Console.WriteLine(k);
          Console.WriteLine(box);
          Console.ReadKey();
}

Çıktı :
444
444

GetType Metodu


Bir değişkenin tipini öğrenmek için GetType metodunu kullanabiliriz.
Örnek:
C#:
var isim = "Mehmet Kaya";
var yas = 22;
var geldiMi = false;

Console.WriteLine("İsim tipi : {0}\nyai tipi : {1}\ngeldiMi tipi : {2}",
isim.GetType().ToString(), yas.GetType().ToString(), geldiMi.GetType().ToString());
Console.ReadKey();

Çıktı:
İsim tipi : System.String
yai tipi : System.Int32
geldiMi tipi : System.Boolean

Yukarıda GetType metodunun ürettiği değer type türünden olduğu için ToString metodu ile String türüne dönüştürdük.

Typeof metodu


Bir değişken tipinin belli bir değişken tipine ait olup olmadığının anlamak için typeof metodunu kullanırız.
Örnek:
C#:
var dogruMu = true;
if (dogruMu.GetType() == typeof(byte))
{
    Console.WriteLine("byte");
}
else
{
    Console.WriteLine("Byte değil");
}


Çıktı:
Byte değil


Blogumdaki Konu linki
Önceki konu Sonraki konu​
 
Son düzenleme:

'The Wolf

Kıdemli Üye
22 Nis 2021
4,043
2,565
Tanrı dağı
Kullanıcı Tanımlı Veri Türleri
csharp-1200x600.png

Struct (Yapı):
Struct veri türü, farklı türlerden değişken tiplerini, özellikleri ve metotları bir çatı altında toplayarak gruplandırmak amacı ile kullanılan veri türü yapısıdır. Değer türünden oldukları için küçük miktarda verinin saklanmasında yüksek performans gösterirler. Yapının içerisindeki her eleman tanımlı olmalıdır. Bir Structın boyutu, içerisindeki tanımlı elemanların boyutunun toplamına eşittir.

Bir struct aşağıdaki gibi oluşur.
C#:
struct structAdi
{
          public degiskenTipi degiskenAdi;
}

Bu struct içersindeki elamana erişmek için ise;
C#:
structAdi nesne = new structAdi();
şeklinde bir nesne tanımayabiliriz.

örnek:
C#:
static void Main(string[] args)
{
          ogrenci ogrencik = new ogrenci();
          ogrencik.ad = "Ahmet";
          ogrencik.soyad = "Aslan";
          ogrencik.numara = 123;
          ogrencik.sinif = "11G";

          Console.WriteLine("Adı : {0}\nSoyadı : {1}\nNumarası : {2}\nSınıfı : {3}",
            ogrencik.ad, ogrencik.soyad,ogrencik.numara, ogrencik.sinif);

          Console.ReadLine();
}
struct ogrenci
{
          public string ad;
          public string soyad;
          public int numara;
          public string sinif;
}

Çıktı:
Adı : Ahmet
Soyadı : Aslan
Numarası : 123
Sınıfı : 11G

Struct içinde struct tanımlamakta mümkündür.
C#:
struct structAdi2
{
          public degiskenTipi degiskenAdi;
          struct structAdi2
        {
                   public degiskenTipi2 degiskenAdi2;
        }
}

Enum

Enum; birden fazla sabiti bir yapı altında toplamamızı sağlar.
Enum aşağıdaki gibi tanımlanır;
C#:
enum enumAdi
{
        sabit1,
        sabit2,
        sabit3,
        ...
        sabitn
}

Örnek olarak haftanın günlerini verebiliriz.

örnek:
C#:
enum Gunler
{
        Pazartesi,
        Salı,
        Çarşamba,
        Perşembe,
        Cuma,
        Cumartesi,
        Pazar
}

Enum yapısında sabitler 0 ile başlar, yani yukarıda gördüğünüz gibi 0. indexi Parazartesi, 6. indexi Pazardır.
IsDefined Metodu

Enum içerisinde bir sabitin tanımlı olup olmadığı bilgisini verir.
C#:
static void Main(string[] args)
{
          if (Gunler.IsDefined(typeof(Gunler), "Salı"))
        {
                  Console.WriteLine("Salı günü bulunmaktadır.");
        }
          else
        {
                  Console.WriteLine("Salı günü bulunmamaktadır.");
        }
}
enum Gunler
{
        Pazartesi,
        Salı,
        Çarşamba,
        Perşembe,
        Cuma,
        Cumartesi,
        Pazar
}
Enumdaki elemanlara erişim sağlamak

Enum içerisindeki elemanlara "(enumIsmi)elemanNumarası" şeklinde Erişim sağlayabiliriz.
Örnek:
C#:
static void Main(string[] args)
{
          int numara;
          Console.WriteLine("Gün numarasını giriniz :");
          numara = Convert.ToInt32(Console.ReadLine());
          Gunler gun;
          gun = (Gunler)numara;
          Console.WriteLine(gun.ToString());
          Console.ReadKey();
}
enum Gunler
{
        Pazartesi,
        Salı,
        Çarşamba,
        Perşembe,
        Cuma,
        Cumartesi,
        Pazar
}

GetName Metodu

Enum içideki bir elamana sayısal değeri aracılığı ile ulaşmamızı sağlar
Örnek:
C#:
static void Main(string[] args)
{
           Console.WriteLine(Enum.GetName(typeof(Gunler), 12));
           Console.ReadKey();
}
enum Gunler
{
            Pazartesi = 3,
            Salı = 9,
            Çarşamba = 33,
            Perşembe = 42,
            Cuma = 12,
            Cumartesi = 12,
            Pazar = 44
}

Çıktı:
Cuma

Not: Enum içerisinde birden fazla aynı değere sahip sabit varsa ilk sabiti döndürür.
GetNames Metodu

Enum içerisindeki elemanları string formatında bir dizinin içerisine saklamamızı sağlar.

Örnek:
C#:
static void Main(string[] args)
{
          foreach (string gunAdi in Enum.GetNames(typeof(Gunler)))
        {
                  Console.WriteLine(gunAdi);
        }
          Console.ReadKey();
}
enum Gunler
{
        Pazartesi = 3,
        Salı = 9,
        Çarşamba = 33,
        Perşembe = 42,
        Cuma = 12,
        Cumartesi = 12,
        Pazar = 44
}

Çıktı:
Pazartesi
Salı
Cumartesi
Cuma
Çarşamba
Perşembe
Pazar

Yukarıda "Enum.GetNames(typeof(Gunler))" koduyla Gunler enumunu bir dizi haline çevirdik ve foreach ile dizinin içerisindeki bütün değerleri yani günleri ekrana yazdırdık.
GetValues Metodu

Enum içerisindeki elemanların sayısal değerlerini bir dizi içinde saklamamız gerektiği zaman kullanırız.
Örnek:
C#:
static void Main(string[] args)
{
          foreach (int deger in Enum.GetValues(typeof(Gunler)))
        {
                  Console.WriteLine(deger);
        }
 
          Console.ReadKey();
}
 enum Gunler
{
        Pazartesi = 3,
        Salı = 9,
        Çarşamba = 33,
        Perşembe = 42,
        Cuma = 12,
        Cumartesi = 12,
        Pazar = 44
}

Çıktı:
3
9
33
42
12
12
44

Parse Metodu

Enum içerisindeki elemanların ismine veya aldığı değere erişmek için kullanırız.

Örnek:
C#:
static void Main(string[] args)
{
          Gunler gunAdi  = (Gunler)Enum.Parse(typeof(Gunler), "Cumartesi", true);
          Console.WriteLine("Cumartesinin değeri : " + gunAdi.ToString("D"));
          Console.ReadKey();
}
 enum Gunler
{
        Pazartesi = 3,
        Salı = 9,
        Çarşamba = 33,
        Perşembe = 42,
        Cuma = 12,
        Cumartesi = 12,
        Pazar = 44
}

Çıktı :
Cumartesinin değeri : 12


Boxıng ve Unboxing

Boxing
; değer türünden bir değişkeni referans türünden bir değişkene atama(aktarma) işlemidir.
Örnek:
C#:
static void Main(string[] args)
{
          int k = 333;
          object box;
          box = k;
 
          Console.WriteLine(k);
          Console.WriteLine(box);
          Console.ReadKey();
}

Çıktı :
333
333


Yukarıda değer türü k değişkenini, referans türü olan box değişkenine atadık.

Unboxing

Unboxing ise boxing'in tam tersidir, yani referans türü bir değişkeni, değer türü bir değişkene atama işlemidir.

Örnek:
C#:
static void Main(string[] args)
{
          int k;
          object box = 44;
          k = (int)box;
 
          Console.WriteLine(k);
          Console.WriteLine(box);
          Console.ReadKey();
}

Çıktı :
444
444

GetType Metodu


Bir değişkenin tipini öğrenmek için GetType metodunu kullanabiliriz.
Örnek:
C#:
var isim = "Mehmet Kaya";
var yas = 22;
var geldiMi = false;

Console.WriteLine("İsim tipi : {0}\nyai tipi : {1}\ngeldiMi tipi : {2}",
isim.GetType().ToString(), yas.GetType().ToString(), geldiMi.GetType().ToString());
Console.ReadKey();

Çıktı:
İsim tipi : System.String
yai tipi : System.Int32
geldiMi tipi : System.Boolean

Yukarıda GetType metodunun ürettiği değer type türünden olduğu için ToString metodu ile String türüne dönüştürdük.

Typeof metodu


Bir değişken tipinin belli bir değişken tipine ait olup olmadığının anlamak için typeof metodunu kullanırız.
Örnek:
C#:
var dogruMu = true;
if (dogruMu.GetType() == typeof(byte))
{
    Console.WriteLine("byte");
}
else
{
    Console.WriteLine("Byte değil");
}


Çıktı:
Byte değil


Blogumdaki Konu linki
Önceki konu Sonraki konu​
Ellerinize Sağlık Güzel Konu Olmuş.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.