- 19 May 2021
- 48
- 15
Kullanıcı Tanımlı Veri Türleri
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.Struct (Yapı):
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();
ö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
}
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
Son düzenleme: