C#

C# Veri Tipleri

Her dilde olduğu gibi C# dilinde de önceden tanımlanmış, programlama dillerinin vazgeçilmezi olan, veri saklamak için kullanılan bir takım veri tipleri mevcuttur. Bu veri tipleri iki farklı şekilde gruplandırılır. Bunlar değer ve referans tipleridir. Değer tipler veriyi tutan değişken türlerdir. Referans tipler ise veri yerine verinin bellekteki adresini tutan değişken türlerdir. Değer tipi bellekte stack adı verilen bölümde saklanırken referans tipleri ise heap adı verilen bölümlerde saklanır. Stack ve Heap kavramlarının ne olduğuna sınıf ve nesne konusunu anlatırken daha detaylı şekilde inceliyeceğiz ama kısaca bahsetmek gerekirse; Stack, boyutları belli aralıkta minimum ve maksimum sınırlarının belli olduğu değişkenlerin tutulduğu kısımdır. Stack içerisinde saklanacak verinin boyutu bilinmelidir. Heap ise sınırları belli olmayan yani sınırsız diyebileceğimiz değişkenlerin tutulduğu kısımdır. Heap içerisinde saklanacak verinin boyutu ise dinamik olarak programın çalışma zamanında kullanıma göre belirlenir.

Şimdi gelelim yukarıdaki paragrafta adı çokça geçen değişken kavramına:

Değişken Nedir?

Teknik olarak ifade etmek gerekirse değişken bilgisayarın belleğinde belli bir veri tipine ait değerlerin tutulduğu alandır. Bir nevi programda kullanılmak üzere oluşturulmuş temel verileri geçici olarak hafızada tutmak için geliştirilmiş ve gerektiğinde kullanılabilir durumda oluşturulmuş sistemdir. Değişkenler kullanım amaçlarına göre farklı şekillerde gruplandırılırlar. Bunlar tamsayılar, metinsel ifadeler, mantıksal ifedeler gibi ilk akla gelenlerdir.

Şimdi C# dilinde bir değişken tanımlamasına örnek verelim:

[Erişim Belirteci] [Veri Tipi] [Değişken Adı] [Atama Oparatörü] [Değeri]

Erişim Belirteci : Bu alanda değişkenin nerelerden ulaşılabilir olmasını istiyorsak bunu erişim belirleyici (public, private, protected v.b.) kullanarak belirtebiliriz. Bunu belirtmek şart değildir. Belirtilmediği takdirde program varsayılan olarak private belirteci üzerinden işlem yapmaktadır. Erişim belirleyiceler hakkında detaylı bilgilere ayrı bir konu üzerinde ele alacağız.

Veri Tipi : Bu alanda değişkeni hangi veri tipinde (int, string, bool) tutacaksak onu belirtiyoruz.

Değişken Adı : Bu alanda değişkenimizi ifade edecek olan ismini giriyoruz.

Atama Oparatörü : Değişkene değer atamak için kullanılır. “=” simgesi kullanılarak atama işlemi gerçekleştirilir.

Değer : C# dilinde herhangi bir değişkene değer atamadan kullanmak mümkün değildir. Program derleme esnasında hata verecektir. Atama işlemi değişkenin tanımlanma aşamasında veya programın ilerleyen kısımlarında bir nesneden veya fonksiyondan değer alıp atama işlemi yapılabilir.

Değişken Tanımlarken Dikkat Etmemiz Gereken Kurallar

• Her değişkenin anlamlı bir adı olmalıdır. Sürecin sağlıklı bir şekilde gerçekleşmesi için bu gereklidir.

• C# dili büyük küçük harfe duyarlıdır. Yani “Sayi” ile “sayi” farklı değişkenlerdir.

• Değişken adının ilk karakteri mutlaka harf olmalıdır. Sonraki karakterler rakam olabilir.

• Değişken adı benzersizdir. Aynı Scope (kapsam) alanı içerisinde sadece bir kez tanımlanabilir.

• Değişken adında boşluk olamaz. Boşluk yerine ”_” karakteri kullanılabilir.

• Değişken adında Türkçe karakter kullanılmaz. (Bu bir isimlendirme standartıdır. Böyle yapılması daha uygundur.)

• C# dilinde her karakterin bir anlamı olduğu için özel karakterler (/,*,+,-) içeremez.

• C# dili tarafından kullanılan class, method, veri tipi tanımlamalarında kullanılan anahtar kelimeler v.b. değişken adı olarak kullanılmaz.

CTS (Common Type System) Tipleri

Common Type System (CTS), .NET Framework içindeki veri türlerini tanımlamak ve kullanmak için bir standarttır. Programlama dilleri arası entegrasyonu kolaylaştırmak için çalışma zamanı tarafından yönetilen bir sistemdir. .NET de bulunan tüm dillerde yazılan kodlar ortak bir tip standartına göre ara bir dile çevrilir. Böylece farklı dillerde yazılmış olan programlar birbiri ile kolayca etkileşim sağlayabilir. Daha ayrıntılı bilgi için tıklayınız.

Bütün veri tipleri bu sistem ile tanınırlar. C# dilindeki veri türleri aslında CTS’ deki veri türleri için birer arayüz gibidirler. Mesela programlamada sıklıkla kullanılan integer veri tipinin CTS’ teki karşılığı System.Int32 dir. Aynı şekilde kullanılan her veri tiplerinin birer CTS karşılığı mevcuttur. CTS sayesinde .NET platformu içinde geliştirilen bütün diller aynı veri tiplerini kullanırlar, tek değişen veri türlerini tanımlama biçimi ve syntax(söz dizimi) yapısıdır.

C# dilinde önceden tanımlanmış on beş tane temel veri tipi mevcuttur. Bunlardan on üçü değer tipli iki tanesi ise referans tiplidir.

Önceden Tanımlanmış Value(Değer) Tipleri

Veriyi taşıyan ve taşıdığı veriye göre bellek üzerinde yer kaplayan değişken türlerdir. Bellekte az yer kaplarlar ve hızlı bir şekilde erişilebilirler.Aşağıdaki verilen tabloda değer tipli veri türlerini ve CTS’ teki karşılıklarını bulabilirsiniz. Tabloda veri türlerinin C# dilindeki adını, CTS karşılığını, kapasitesini ve kullanım aralığını bulabilirsiniz.

Önceden Tanımlanmış Reference(Referans) Tipleri

Bellek bölgesinde veri yerine o verinin adresi tutulur ve o adresin gösterdiği yerdede veri tutulur. Başka bir deyişle, bir ifade referans türleri içeriyorsa nesnenin adresi üzerinden işlem yapılmaktadır.

C# dilinde önceden tanımlanmış iki tane referans tipi vardır. Bunlar tabloda belirtmiş olduğumuz string ve object veri türleridir.

Bunlardan ilki olan object veri türü C# dilinde bütün veri tiplerinin türediği bir sınıf yapısıdır. Yani tanımlanan bütün veri tipleri object türünden türemiştir. Buda object veri türüne herhangi bir veri türündeki veriyi atayabileceğimiz anlamına gelir. Çünkü C# dilinde bütün nesneler bir object’dir. Gerektiğinde özelleştirilerek farklı amaçlar için kullanılırlar. Bu atama işleminde object türüne atanan veri object durumunda olurken, object türü içerisinde kendi öz veri türünü tutabilir. Bu olaya Boxing (Kutulama) denir. Bunun tam tersi durumda ise object içerisindeki veriyi, kendi öz veri tipinde elde etmeye ise Unboxing(Kutudan çıkarma) denir.

Diğer bir referans tipimiz ise string veri türüdür. String veri tipi aslında birden çok karakterlerden oluşan bir char dizisidir. C ve C++ gibi dillerde string işlemleri yapabilmek için karakter dizileri tanımlanır ve bunlar string olarak işleme alınırlar. Fakat C# dilinde karakter dizileri tanımlamak yerine string adı verdiğimiz bu veri türü mevcuttur. Avantajı herhangi bir metinsel ifade tanımlaması yaparken karakter dizisi oluşturmak yerine string veri tipiyle bu işlemi daha kolay ve yalın bir şekilde gerçekleştirebiliriz.

Bir cevap yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir