Değişkenler Veri Tipleri


11.03.2019 16:33:45 C#(Form,Console,Veritabani) Bilgi Yolunda

Değişkenler, kendilerine atanan değerleri veya nesneleri saklarlar.Veri tipleri ise bu değişkenlerin sakladığı değer veya nesnelerin tipleridir.

Değişkenler,kod yazarken en büyük yardımcımızdır.Bizim adımız hafıza görevini üstlenirler.Küçük depolama birimleride diyebiliriz.İhtiyacımız olduğunda bize hafızasındaki veriyi veya nesneyi sunarlar.

Kullanımı:<Değişken Tipi> Değişken Adı=Değeri

ÖNEMLİ:Konu sonundaki videoyu izleminizi şiddetle tavsiye ediyorum.

Değişken Adlandırma Kuralları

-Her değişkenin anlamlı bir adı olmalıdır.

-C#büyük küçük harfe duyarlıdır.

-Değişken adının ilk karakteri mutlaka harf olmalıdır.Sonraki değerler içerisinde rakam olabilir.

-Değişken Adları rakamla başlayamaz.

-Bir değişken adı aynı kapsam alanında sadece bir kez tanımlanabilir.

-Değişken adında boşluk olamaz.Boşluk yerine _ koyulabilir.

-C# tarafından kullanılan class,methodveri tipleri vb. anahtar kelimeler değişken adı olarak kullanılamaz.

-Özel karakterler içeremez(/,*,+,-).

-Değişken adı en fazla 255 karakter olabilir.

VERİ TİPLERİ

Değişkenler,Ram üzerinde veri barındırmamızı sağlar.Ram üzerindeki bu verilerin kendilerine has tipleri vardır.Bu tiplere göre ram kapladıkları alan,kulanım ve veriyi sunum aşamaşları farklılıklar gösterir.

Değişkenlerin veri tipleri;Sayısal,Metinsel,Mantıksal,Nesne,var,datatime olabilir.Veri tipleri, değişkenlerin ramda kaplayaccağı alanı belirleyen yapılardır.

DEĞER TİPLERİ

 Değer tipleri; veriyi taşıyan ve taşıdığı veriye göre bellek üzerinde yer dolduran değişken türleridir. Bellekte az yer kaplarlar ve hızlı bir şekilde erişilebilirler. Ayrıca belleğin "stack" bölgesinde tutulurlar.

-Sayısal Veri Tipleri

Sayısal veri tiplerinden en çok int,long,double veri tiplerini kullanacağız.

-Karakter Veri Tipi

Sadece tek bir karakter alır string tipi aslında referans tipindedir.

#AdıBoyutDeğer
1 char 2Byte-16Bit Unicode karakter
2 string 2byte X karakter adedi Unicode karakterlerden oluşur

Karakter boyut hesabını yacaksanız eğer Encoding.UTF8.GetByteCount.() Metodunuzu kullanmanızı öneriyorum.


-Mantıksal Veri Tipi

Mantıksal veri tipi true yada false değerini alır.

#AdıBoyutDeğer
1 bool 4byte true veya false

-Tarih Veri Tipi

#AdıBoyutDeğer
1 DateTime 8byte 64Bit Tarihsel veri tipleri

Değer tipleri C# dilinde Struct olrak tanımlanmıştır.

REFERANS TİPLERİ

Referans türleri ise, bellek bölgesinde veri yerine adresi tutarlar ve o adresin gösterdiği yerde de veri tutulur. Başka bir deyişle, bir ifade referans türleri içeriyorsa nesnenin adresi üzerinden işlem yapılmaktadır. Veri taşınmasını gerektiren işlemlerde nesnenin bütün verisi kopyalanmaz.

-Object Veri Tipi

Tüm Veriler object veri tipinden türetilmiştir.


#AdıAçıklamaNameSpace
1 object Tüm verilerin türediği kök System.Object
2 string Unicode karakterlerden oluşur. System.String

C# Referans tipleri Class olarak tanımlanmıştır.

STRİNG VERİ TİPİ BİT HESAPLAMA

Formül:20+(n/2)*4

Bursa Kelimesine bakalım:

5 Karakter

20+(6/2)*4=32Bit Çıkar

Ancak ingiliz Alfabesi dışındaki harfler kullanıırsa hesaplama değişir.

Karakter hesabını doğru şekilde yapabilmek için Encoding sınıfının Encoding.UTF8.GetByteCount.() Metodunuzu kullanmanızı öneriyorum.

VERİ TİPLERİNİN MİN. VE MAX. DEĞERLERİNİ BULMA

Veri tiplerinin maximum ve minumum değerlerini bulurken MaxValue,MinValue proportieserinden faydalanacağız.

Console projesi oluşturup mainin içerisine aşağıdaki kodları yazıyoruz.

1
2
3
string Sbyte = "sbyte veritipi:" + "Max:" + sbyte.MaxValue + ",Min:" + sbyte.MinValue; 
Console.Write(Sbyte);
Console.ReadKey();

Programımızı çalıştırdığımızda aşağıdaki çıktıyı alacağız.

byte için=byte.MinValue,byte.MaxValue

int için=uint.MinValue,uint.MaxValue

double için=double.MinValue,double.MaxValue

String Bir Verinin Boyutunu Hesaplama

Aşağıdaki kodu console projemize yapıştırıyoruz.

1
2
3
4
string isim = "Bilgi Yolunda";
int boyut = Encoding.UTF8.GetByteCount(isim);
Console.Write(boyut);
Console.ReadKey();

Programı çalıştırdığımızda karşımıza 13 değeri gelir.Bilgi Yolunda kelimesinde aradaki boşluk ile birlikte 13 karakter vardır.

BELLEKTEKİ YERLERİNE GÖRE DEĞİŞKENLER

Değişkenler bellekteki yerlerine göre Değer tipleri ve Referans Tipleri olarak ikiye ayrılırlar.

STACK

Değer tipleri(int,double,byte vs.)Bellekte(Ram) Stack alanında yer alırlar.Değer tipli Local değişkenler programın sonlanması veya kodl bloğunun tamamlanması ile hafızadan silinirler.

HEAP

Referans Tipleri(class,interface,delegate,object,string)bellekte(Ram) Heap alanında tutulur.Referans tipli değişkenlerin kendileri Heap alanında tutuluren,adresleri Stack alanındadır.

Referans tiplerinin kullanımı tamamlandığında Garbage Collector(Ram temizleyici) tarafından bellekten kaldırılır.

Bir sınıfa ait bir nesnenin örneği(instance) alındığında Heap içinde nesnenin tüm öğelerini içeren bir Ram bloğu oluşturulur.Adresini ise Stack saklar.

Button btn=new Button();//Referans tipine örnek

Kod bloğundaki buton Heap alanında oluşurken,adresi olan btn Stack alanındadır.Bellekteki şaretleri(Pointer) kullanılmayan nesnelerin kullanım ömrü tamamlandığı için Garbage Collector tarafından kaldırılır.

Value Type(Değer Tipi):Nesneler birbirlerine eşitlenirse değerler kopyalanır.Birbirinden bağımsız iki value type(Değer tip)nesne oluşur.İçlerinden birinin değerinin değişmesi diğerini etkilemez.

Reference Type(Referans tip):Nesneler birbirine eşitlenirse adresleri(Heap Bölgesinde tutulur)kopyalanır,Böylece herhangi birinin değişmesi  diğerininde değişmesine neden olur.Çünkü adres değişmiştir.

Aşagıdaki örneği inceleyiniz.

1
2
3
4
5
string[] isim = new string[] {"Ali","Veli"};
string[] sonisim = isim;
isim.SetValue("Mehmet", 0);
Console.WriteLine(sonisim.GetValue(0)); //isim dizisinin ilk elemanını değiştirmeme rağmen aynı adresten veri çektikleri için sonisim diziside değişir.
Console.ReadKey();

Yukarıdaki örneği console projemzde çalıştırdığımızdaki ekran çıktımız.

Referans tipi değişkenler adresi gösterir.

ÖNEMLİ:Konu sonundaki videoyu izleminizi şiddetle tavsiye ediyorum.





Yorum Yap :



Site içi Arama


En Çok Okunanlar

Sorusu Olan Varmı?

Paylaştıgım video,dosya yada projelerle ilgili sorularınızı buradan sorabilirsiniz.
Not:Projemi siz yaparmısınız demeyin lütfen :)

Sorunuz mu var?