Değer türleri ve başvuru türleri

Tamamlandı

C#’de sayıda farklı veri türü varken kullanacağınız doğru türü seçmek için her birinin ne yaptığını ve ne zaman bir veri türünü diğeri karşısında tercih edebileceğinizi anlamanız gerekir.

Ancak bir türü neden diğerine tercih edebileceğinizi tartışabilmemiz için C# ve .NET dillerinde verilerin ve veri türlerinin nasıl çalıştığını anlamanız ve benzer veri türleri arasındaki önemli farklılıklar dahil olmak üzere veri türleri hakkında daha fazla bilgi edinmeniz gerekir.

Veri nedir?

"Veri nedir?" sorusunun yanıtı, kime sorduğunuza ve hangi bağlamda sorduğunuza bağlıdır.

Yazılım geliştirme alanında veri esas olarak bilgisayarın belleğinde bir dizi bit olarak depolanan bir değerdir. Bit, bir 0 veya 1 olarak ya da sırasıyla "kapalı" ve "açık" olarak temsil edilen basit bir ikili anahtardır. Tek bir bit faydalı görünmez ancak 8 biti bir dizide birleştirdiğinizde bir bayt oluştururlar. Bir baytta kullanılan her bit, dizideki anlamı yüklenir. Aslında, ikili (ya da onun yerine base-2) sayısal sistem kullanırsanız sadece 8 bitle 256 farklı birleşimi temsil edebilirsiniz.

Örneğin, bir ikili sayısal sistemde 195 sayısını 11000011 olarak temsil edebilirsiniz. Aşağıdaki tablo bunun nasıl işlediğini görselleştirmenize yardımcı olacaktır. Birinci satırda, bir bayttaki konuma karşılık gelen 8 sütun bulunur. Her konum farklı bir sayısal değeri temsil eder. İkinci satır tek bir bitin değerini 0 veya 1 olarak depolayabilir.

128 64 32 16 8 4 2 1
1 1 0 0 0 0 1 1

Birinci satırda ikinci satırdaki 1 değerine karşılık gelen her bir sütundan sayı eklerseniz, ikili sayısal sistem temsiline eşdeğer ondalık sayıyı elde edersiniz. Bu durumda değer 128 + 64 + 2 + 1 = 195 olacaktır.

255 değerinden daha büyük değerlerle çalışmak için bilgisayarın daha fazla bayt depolaması gerekir. Bilimsel bir ortamda milyonlarca büyük sayıyla çalışıyorsanız, kullanacağınız veri türlerini daha dikkatli bir şekilde düşünmeniz gerekebilir. Kodunuzun çalışması için çok daha fazla bellek gerekebilir.

Metin verileri nedir?

Bir bilgisayar yalnızca 0 ve 1 değerlerini anlıyorsa metinlerle çalışmamızı nasıl sağlar? ASCII gibi bir sistem kullanarak büyük ve küçük harfleri, sayıları, sekme, geri tuşu, yeni satır ve birçok matematik sembolü, blok, satır vb. karakterleri temsil edecek tek bir bayt kullanabilirsiniz.

Örneğin, uygulamamda değer olarak küçük a harfini depolamak istersem bilgisayar yalnızca o değerin ikili formunu anlar. Bilgisayar tarafından nasıl işlendiğini daha iyi anlamak istersem öncelikle ASCII değerlerinin ve ondalık eşdeğerlerinin aramasını sağlayan bir ASCII tablosunu bulmam gerekir. Bu tür bir kaynağı çevrimiçi ortamda bulmak için "ASCII arama ondalık" terimlerini arayabilirsiniz.

Bu durumda, küçük a harfi 97 ondalık değerine eşdeğerdir. Daha sonra, bir a ASCII harfinin bilgisayar tarafından nasıl depolandığını bulmak için aynı ikili sayısal sistemi ters yönde kullanırım.

128 64 32 16 8 4 2 1
0 1 1 0 0 0 0 1

Ya da 64 + 32 + 1 = 97.

Büyük olasılıkla bu tür dönüştürmeleri kendi başınıza yapmanız hiç gerekmedi, ancak bilgisayarın açısından verileri anlamak, özellikle veri türlerini ele alırken temel bir kavramdır.

Veri türü nedir?

Veri türü, bir değer için ne kadar belleğin ayrılması gerektiğini tanımlayan bir programlama dili yapısıdır. Çok sayıda veri türünün olmasının nedeni budur: çünkü programlama dili tasarımcıları veri türlerinin birçok farklı uygulama ve veri boyutu için kullanılacağını bilirler.

Kariyerinizde derleyeceğiniz uygulamaların türünü düşünerek tüm mevcut veri türlerinin küçük bir alt kümesini kullanacağınızı fark edeceksiniz. Ancak yine de başka türlerin de mevcut olduğunu ve nedenlerini bilmeniz çok önemlidir.

Değer türleri ve başvuru türleri

Veri türlerinin iki temel kategorisi vardır: değer türleri ve başvuru türleri. Değer ile başvuru türleri arasındaki temel farklılık, uygulamanız yürütülürken bu değerlerin belleğin neresinde geçici olarak depolandığıyla ilgilidir. Değerin nerede depolandığı, .NET çalışma zamanının beyaz (doğum), atama ve alma (ömür) ve sonlandırma (ölüm) dahil ömrünü nasıl yönettiğini etkiler. Bu da sonuç olarak değer türü veya başvuru türü ile çalışırken kullandığınız söz dizimini etkiler.

Bu modül basit değer ve başvuru türlerine odaklanacaktır. C# hakkında bilgi edindikçe, değer ile başvuru türleri arasındaki temel farklılıkla ilgili yeni ayrıntılar ortaya çıkacaktır.

Basit değer türleri

Basit değer türleri, anahtar sözcük olarak C# tarafından sağlanan bir dizi önceden tanımlı türdür. Bu anahtar sözcükler .NET Sınıf Kitaplığı’nda önceden tanımlanmış diğer adlardan ibarettir. Örneğin, C# anahtar sözcüğü int, .NET Sınıf Kitaplığı’nda System.Int32 olarak tanımlanan bir değer türünün diğer adıdır.

Basit değer türleri char ve bool gibi zaten kullanmış olabileceğiniz veri türlerinin birçoğunu içerir. Ayrıca, çok çeşitli tam ve kesirli sayıyı temsil eden birçok tam sayı ve kayan nokta değer türü vardır.

Not

Basit değer türlerinin yanında diğer veri türleri sabit listesi ve yapıları içerir. Ancak, bunları diğer modüllerde ele alacağız.

Özet

  • Değerler basit açma/kapatma anahtarları olan bitler halinde depolanır. Bu anahtarlardan yeterince birleştirdiğinizde mümkün olan tüm değerleri depolayabilirsiniz.
  • Veri türlerinin iki temel kategorisi vardır: değer ve başvuru türleri. Farklılık, değerlerin bilgisayar tarafından nasıl ve nerede depolandığıyla ilgilidir.
  • Basit değer türleri imzalı ve imzasız tam sayı sayısal türleri ve kayan nokta sayısal türleridir.