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ı | Boyut | Değ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ı | Boyut | Değer |
---|---|---|---|
1 | bool | 4byte | true veya false |
-Tarih Veri Tipi
# | Adı | Boyut | Değ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çıklama | NameSpace |
---|---|---|---|
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.
Paylaştıgım video,dosya yada projelerle ilgili sorularınızı buradan sorabilirsiniz.
Not:Projemi siz yaparmısınız demeyin lütfen :)
Yorum Yap :