C# Temel Veri Türleri

C# dilinde temel olarak veri tipleri ikiye ayrılırlar. Bunlar; önceden tanımlanmış veri türleri ve kullanıcı tarafından tanımlanmış veri türleridir. Önceden tanımlanmış veri türleri de kendi arasında referans tipi ve değer tipi olmak üzere ikiye ayrılır.

Değişkenler

Değişkenler, içinde farklı türlerde veri saklayabileceğimiz bellek alanlarının programlamadaki karşılığıdır. Tüm programlama dillerinde değişkenler kullanılmadan önce tanımlanmalıdır. Verilerin bellekte tutulması aşağıdaki bölgelerden birinde olmaktadır.

1. Stack Bölgesi

Stack bölgesi RAM'i temsil eder. Genel olarak önceden tanımlanmış veri tiplerinin çoğu burada tutulur. Stack bölgesine Stack Pointer ile doğrudan erişilebilir. Stack pointer o anda bellekte çalışan bölgenin adresini tutan yapıdır. Stack pointer, bellekteki alan tahsisatına göre bir azaltılır ya da bir arttırılır. Bu yüzden stack bölgesinde tutulacak olan verinin kapladığı alanın önceden bilinmesi zorunludur.

2. Heap Bölgesi

Bu bölge de RAM'de bulunan hafıza alanıdır. C#'daki bütün nesneler burada oluşturulur. Bu bölgede tahsisatı yapılacak nesnenin önceden tanımlanmış olması gerekmemektedir. Heap bölgesinde tanımlanan veriler dinamik olarak oluşturulduğu için programlarda çok büyük esneklik avantajı sağlar. Ancak bu avantajının yanı sıra Stack bölgesine göre işlem hızı daha yavaştır.

3. Static Bölge

Bellekteki herhangi bir sabit bölgeyi temsil eder. Bu alanda saklanan veriler program çalışma süresince tutulur.

4. Sabit Bölge

Sabit değerler genelde programın içerisinde gömülü şekildedirler. Bu tip değerlerin değişmesi mümkün değildir. Sadece okuma amaçlı oldukları için bazı durumlarda ROM'da saklanabilmektedir.

5. RAM Olmayan Bölge

Bellek bölgesi olmayan diğer tüm bölgeleri temsil eder. Sabit disk, CD, DVD, Flash Disk vs.

Değişken Tanımlama

C#'da tüm nesneler aşağıdaki şekilde tanımlanırlar.

<veri türü> <isim>;

Örneğin 32 Bitlik işaretsiz tamsayı türü olan "uint" tipinde, "x" adında bir değişken tanımlamak istersek:

uint x;

yazabiliriz. Ancak tanımlanan değişkende herhangi bir değer tutulmamaktadır. Bu yüzden C# bize bu şekilde tanımladığımız bir değişkeni kullanmamıza izin vermez. Değişkenlere değer atama iki şekilde yapılır.

1. Değişken tanımlanırken değerinin de bildirildiği durum

 

2. Değişken tanımlamasının yapılıp değerinin sonradan bildirildiği durum

uint x;
x=50;

Eğer bir satırda birden fazla değişken tanımlamak istersek aralarına virgül koyarak işlemi gerçekleştirebiliriz.

float x, y, z;

Değişkenlerin Adlandırılması

1. Değişken isimlerinde büyük küçük harf duyarlılığı vardır. "tbt" ile "TBT" C# için farklıdır.

int tbt, TBT;
tbt=10;
TBT=9;
Console.WriteLine(tbt);
Console.WriteLine(TBT);

yazıp programımızı derlediğimizde ekrana iki farklı değer yazdığını görebiliriz.

2. Değişken isimleri numaralar ile başlayamaz ve içerisinde boşluk bulunduramaz. Değişken ismi harf ile başlamalıdır ancak ondan sonra gelen karakter numara olabilir. Örneğin

int tbt1;
bool x5;

şeklindeki tanımlamalar doğrudur.

Değişkenlerin Faaliyet Alanı

C#'da programlar açılan kapanan parantezler içerisine yazılır. Bu açılan kapanan parantezlere blok adı verilir. Bir değişkene, sadece tanımlandığı blok içerisinden erişilebilir. Örnek üstünde açıklamak gerekirse :

{ // Birinci Blok
  int a=5;
  { //İkinci Blok
  int b=3;
  }
  { // Üçüncü Blok
  int b=3;
  }
}

Birinci blok içerisinde tanımlanan a değişkenine hem ikinci bloktan hem de üçüncü bloktan erişebiliriz. Aynı şekilde ikinci ve üçüncü blokların içerisinde a adında bir değişken tanımlamak hataya sebep olacaktır. Ancak burada bir farklılık var. İkinci blok ve üçüncü blok içerisinde yer alan b adlı değişkenler isimlerinin aynı olmasına karşın hata vermezler. Çünkü ikinci ve üçüncü bloklar birbirlerini kapsamadıkları için ikinci bloktaki ve üçüncü bloktaki b değişkenleri hafızanın farklı bölgelerinde saklanırlar. Birinci bloktan b değişkenine erişmek de mümkün değildir.

Sabit İfadeler

Bir program boyunca değerinin değişmeyeceğini düşündüğümüz verileri tanımlarken "const" anahtar sözcüğü kullanarak tanımlarız. "const" olarak tanımlanan değişkenlerin en büyük avantajı programın herhangi bir yerinde değerini değiştirmeye kalktığımızda hata vermesidir. Bu sayede değişkenimizin değerinin hep sabit olduğundan emin oluruz.

const double e = 2.71828;

şeklinde tanımlayabiliriz. Aynı şekilde sabitlere ilk değer verilirken yine sabitler kullanılmalıdır. 

int a = 3;
int b = 5;
const int c = a+b;

şeklindeki bir tanımlama da geçerlidir. Ancak sabitlerden herhangi birinin değeri değiştirilirse program hata verecektir. Örneğin:

int a = 3;
a = a + 1;
int b = 5;
const int c = a + b;

şeklindeki bir ifade hatalıdır. Çünkü a değişkeni sabitliğini yitirmiştir. Sabit ifadeler ile ilgili uymamız gereken üç kural vardır.

1. Sabitler tanımlandıklarında değerleri atanmalıdır. İlk değer verilmeyen değişlenler const olamazlar.

2. Sabit ifadelere ancak sabit ifadeler ile ilk değer atanabilir.

3. Sabit ifadeler tasarım olarak zaten statik oldukları için ayrıca statik olarak belirtmek hataya yol açacaktır.

Değer Tipleri

Değer tiplerinde bir nesnenin değeri her zaman direkt saklanır. Aşağıdaki gibi bir atama yapıldığında x ve y değişkenleri birbirinden bağımsız olarak 5 değerini tutarlar. x değişkenindeki bir değişim asla y değişkenini etkilemez.

int x = 5;
int y;
y= x;

Değer tipi değişkenlerine ilk değer verilmesi iki şekilde yapılabilir.

1. İlk değer programcı tarafından atanarak:

int tbt = 0;

2. İlk değer nesnenin varsayılan yapıcı işlevi çağırılarak yapılır.

int tbt = new int();

Her bir tip için varsayılan bir ilk değer vardır. Bu ilk değerler aşağıdaki tabloda verilmiştir.

Veri Tipi Varsayılan İlk Değer
bool false
byte 0
char '\0'
decimal 0.0m
double 0.0d
enum enum sabitindeki ilk değer
float 0.0f
int 0
long 0L
sbyte 0
short 0
struct Yapı nesnesindeki bütün değerler varsayılan değere, referans tipleri ise null değere atanır
uint 0
ulong 0
ushort 0

byte Veri Türü

byte bilgisayarda 8 bitlik bir bilgiyi saklamak için kullanılır. İşaretsiz bir veri türüdür ve sadece pozitif sayıları tutabilir. Alacağı değer 0 ile 255 aralığındadır.

sbyte Veri Türü

sbyte veri türü byte veri türü gibi 8 bitlik bir veri türüdür. Ancak işaretli bir veri türü olduğu için alabileceği değer -128 ile 127 aralığındadır.

short Veri Türü

short veri türü 16 bitlik işaretli tamsayı veri türüdür. Alabileceği değer -32,768 ile 32,767 aralığındadır.

ushort Veri Türü

ushort veri türü 16 bitlik işaretsiz tamsayı veri türüdür. Alabileceği değer 0 ile 65,535 aralığındadır.

int Veri Türü

int veri türü 32 bitlik işaretli tamsayı veri türüdür. Alabileceği değer -2,147,483,648 ile 2,147,483,647 aralığındadır.

uint Veri Türü

uint veri türü 32 bitlik işaretsiz tamsayı veri türüdür. Alabileceği değer 0 ile 4,294,967,295 aralığındadır.

long Veri Türü

long veri türü 64 bitlik işaretli tamsayı veri türüdür. Alabileceği değer -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 aralığındadır.

ulong Veri Türü

ulong veri türü 64 bitlik işaretsiz tamsayı veri türüdür. Alacağı değer 0 ile 18,446,744,073,709,551,615 aralığındadır.

float Veri Türü

float veri türü 32 bitlik gerçek sayı veri türüdür. "f" ya da "F" son ekini alarak tanımlanırlar. Alacağı değer ± 1.5 * 10-45 ile ± 3.4 * 1038 aralığındadır.

float x = 1.8f;
float x = 1.8F;

tanımlamaları arasında hiçbir fark yoktur. "f" ya da "F" son eki konulmadığı durumda değer otomatik olarak double veri türü kabul edilir ve hata alınır.

double Veri Türü

double veri türü 64 bitlik gerçek sayı veri türüdür. "d" ya da "D son ekini alarak da tanımlanabilir. Eğer son ek yazılmazsa sistem otomatik olarak double veri türünde kabul edecektir. Alacağı değer ± 5 * 10 -324 ile ± 1.7 * 10308 aralığındadır.

double x = 1.8;
double x = 1.8d;
double x = 1.8D;

tanımlamaları arasında hiçbir fark yoktur.

decimal Veri Türü

decimal veri türü 128 bitlik gerçek sayı veri türüdür. "m" ya da "M" son ekini alarak tanımlanırlar. Alacağı değer 10-28 ile 7.9 * 1028 aralığındadır.

decimal x = 1.8m;
decimal x = 1.8M;

tanımlamaları arasında hiçbir fark yoktur. "m" ya da "M" son eki konulmadığı durumda değer otomatik olarak double veri türü kabul edilir ve hata alınır.

bool Veri Türü

"true" ya da "false" değerleri saklamak için kullanılan veri türüdür. True ya da False değeri atanabileceği gibi karşılaştırma operatörlerinin oluşturduğu ifadeler de atanabilir.

bool x = true;
bool y = false;
bool z = 3 < 5;

char Veri Türü

char veri türü 16 bit uzunluğunda Unicode standartlarındaki karakterleri temsil etmek için kullanılır.

char x = 'A';
char y = '\x0058';
char z = (char)45;

Referans Tipleri

C# dilinde önceden tanımlanmış iki adet referans tipi veri türü bulunur. Bunlar string ve object veri türleridir. Object veri türü C# dilindeki bütün türlerin türediği veri tipidir.

string Veri Türü

string veri türü Unicode karakterlerden oluşan bir dizi gibi düşünülebilinir.

string x = "tahribat.com";
string y = "HolyOne";

Özel anlamlar ifade eden karakterler kullanmak istiyorsak bunları "\" karakteri ile belitmemiz gerekir ya da string ifadesinin önüne "@" işareti konulur.

string path = "c:\\windows\\";
string path = @"c:\windows\";

şeklindeki tanımlamaların ikisi de doğrudur.

object Veri Türü

object veri türü C#'da bulunan tüm veri türlerinin türediği veri türüdür. Bu yüzden tüm değerler ve nesneler object türünden bir değişkene atanabilir. Nesnelerin object türüne dönüştürülmesine boxing denilmektedir. Tür dönüşümü konusunda daha detaylı inceleyeceğiz. 

 

Tarih:
Hit: 2693
Yazar: crafty
( crafty Kaynaklı )
Taglar: c# veri tipleri


Yorumlar


Yorum yapabilmek için üye girişi yapmalısınız.

Yorumlar

samato tarafından yazıldı. Tarih: 02/Oca/16 23:12
eline sağlık çok güzel yazmışşın hocam.
rappermcs tarafından yazıldı. Tarih: 09/Kas/15 20:31
Bunu yazan insan olamaz :)