Merhaba arkadaşlar,
Bugün temel konulardan biri olan C# değişkenler ve türler hakkında bahsetmek istedim.(Daha doğrusu yazı planlamasını ona göre oluşturdum. -Step by Step)
Eğer yazılım ile ilgileniyorsanız bugün yazacaklarım hakkında bir fikriniz vardır fakat hatırlamakta fena olmaz. Bilmiyorsanız da basitçe anlatmaya çalışarak daha detaylı kaynaklara yönlendirme yapacağım. Bu arada bunların hepsi Microsoft’un dökümanları arasında bulunur, ben daha alternatif kaynaklar göstermeye çalışacağım.
Öncelikle C# da değişken denilen bir kavram vardır. Değişkenler girilen değeri tutmak, atamak vb. işlemleri için kullanılır. Değişkenlerin farklı boyutta ve tiplerde kullanılır.Örneğin; int sayısal değerler için -2147483648- 2147483647 (tam sayı) aralığında kulanılır, string değişkeni metinler için, char değişkeni tek karakter için kullanılır. C#’ta bulunan değişkenler ve değişken tanımlarken dikkat edilmesi gereken konular için
https://tr.wikibooks.org/wiki/C_Sharp_Programlama_Dili/De%C4%9Fi%C5%9Fkenler (Türkçe)
https://www.tutorialspoint.com/csharp/csharp_data_types.htm (İngilizce)
adresleri benim hoşuma gitmişti. Daha ayrıntılı bilgi için bakabilirsiniz.
Değişkenler, veri tipleri ve referans türleri olarak ayrılırlar. Kısaca bahsetmek gerekirse veri tpileri bellekte stack bölgesinde tutulan ve içeriğine direk ulaşabildiğimiz türlerdir. Referans tipleri ise bellekte heap bölgesinde saklanır, stack bölgesinde ise heap adres bilgisi olarak tutulur ve veriye direk erişmek yerine adresine erişiriz.
Değişken türleri: “int”, “long”, “float”, “double”, “decimal”, “char”, “bool”, “byte”, “short”, “struct”, “enum”
Referans türleri: “string”, “object”, “class”, “interface”, “array”, “delegate”, “pointer” (nesneler object den türer)
String , referans türü olsa bile istisna olarak metodlara işlem olarak geçerken veri türü gibi davranır. Ayrıca ref ve out ifadelerinden de bu noktada bahsetmek gerekir. Ref ve Out ifadeleri, değer tiplerinin adreslerini parametre olarak verebilmek için kullanılır. Tek farkları ise ref ifadesinde ilk atama yapılması zorunlu iken out ifadesinde böyle bir zorunluluk yoktur.
Not:Veri türlerinin temeli ilkel tiplerdir. Ortak bir payda için bu türlere ihtiyaç duyulmuştur. Bunun ile ilgili detaylı bilgi için
https://syntaxdb.com/ref/csharp/data-types
Veri tipleri ve referans tiplerini daha ayrıntılı olarak incelemek isterseniz
http://industryolog.com/c-egitimleri-deger-ve-referans-tipleri-value-reference-types/ (Türkçe)
http://net-informations.com/faq/general/valuetype-referencetype.htm (İngilizce) adreslerinden faydalanabilirsiniz.
Değer türleri ve referans türleri arasında boxing ve unboxing işlemleri yapılır.
Kısaca boxing işlemi, bir değer tipinin, dolaylı olarak referans tipine dönüştürülmesi işlemidir. Unboxing ise referans tipinin direk olarak değer tipine dönüştürülme işlemidir. Unboxing işleminde, kullanılan veri tipinin boxing işleminde kullanılan ile aynı olmasına dikkat edilmesi gerektir. Boxing ve Unboxing işlemi performans kaybından dolayı gerekmedikçe kullanılmamalıdır.(Normal atamaya göre Boxing-20, Unboxing-4 kat yavaştır)
Evet arkadaşlar elimden geldiğince bahsetmeye çalıştım umarım faydalı olmuştur. Bugün biraz fazla teknik oldu farkındayım ama bu konu için böyle olması gerekti. Kalın sağlıcakla 🙂