C# Tip Değişimi
-
Tip dönüşümü
şimdi bir byte tipinde değişkenimiz var biz bunu int tipine dönüştürmek istiyoruz
2 türlü yol var bir tanesi
İmplicit(kapalı) Dönüşüm
Explicit(Açık)Dönüşüm
İmplicit(kapalı) Dönüşüm
kapalı dönüşüm yani sen makineye bir komut vermesende dönüşür
derleyici otomatik anlayıp yapar da diyebilir bunaörnek olarak
int a;
byte b = 8;
a = b;
MessageBox.Show(a.ToString());burda byte olarak b yi int e atayıp message box da gösterdik
Byte'dan çevirebileceğiniz Tipler
short,ushort,int,uint,long,vlong,float,decimal,double
char'dan çevirebileceğiniz Tipler
ushort,int,uint,long,ulong,float,double,decimal
...
örnek:
char harf = 'A'; //char tipinde harf diye bir değişken oluşturduk değişkenede "A" değerini atadık
int sonuc; //İnt tipinde sonuc adında değişken oluşturdul
sonuc = harf; //ardından harf değişkenini sonuc değişkenine atadık yani char tipini int tipien dönüştürdük
MessageBox.Show(sonuc.ToString()); //ardından sonucu ekrana message box kontrolüyle gösterdiksonuç olarak ekrana "65"çıkacaktır bu 'A' harfinin pc için anlamıdır ascii zımbırtısını veriyor
Explicit(Açık)Dönüşümbundada biz komut veriyoruz normalde derleyici bunu çevirmeye cesaret edemez çünkü ciddi veri kaıpları olur
ama biz program yazarkenbunu bielrek yapıorum diey omut verioruz derleyicide eli mahkum olduğu için çeviriyoraşşağıdaki örnektede int tipini byte tipine çeviriyoruz
örnek:
byte x;
int y = 100;
x = (byte)y;
MessageBox.Show(x.ToString());sorun çıkmayacaktır
Fakat alttaki örneği yaparsanız
Örnek:
byte x;
int y = 350; //explicit dönüşüm
x = (byte)y;
MessageBox.Show(x.ToString());böyle yaparsak sonuç olarak karşımıza 94 çıkar
bunun nedeni aslındaint:-2.147.483.648.......0......2.147.483.647 bu kadar değer saklayabilir
fakat
byte sadece:0.......255 arası veri saklayabilir
350 ide 255 den büyük olduğu için ekrana 94 sonucu çıkar
neden 94?
şöyle düşünürsek00000000|00000000 |00000001|01011110
1 byte 1 byte 1 byte 1byte
int:4 byte
byte:1 byte
byte çeviridğimizde geriye kalan 3 byte silinior (4-3=1)
geriye kalan 1 byte ın değeri ekranda gözüken...ekrana gözüken:01011110 budur
bunuda şöyle hesaplarsak
0.2üzeri0+1.2üzeri1+1.2üzeri2+1.2üzeri3+1.2üzeri4+0.2üzeri5+1.2üzeri6+0.2üzeri7
bunun sonucuda 94 çıkıyor
Döküman Tarafımca Yazılmıştır,
hemen korkmayın program yazarken 010010101 gibi 0 ve 1 lerle uğraşmıcaz
sadece mantağı kavramanız için
Sisarp
-
dökümanı okuyunca gözüme çarptı
birde convert olayı var
buda diğerleri gibi
size örnek bir kod verip direk geçicem
byte x;
int y = 200;
x = Convert.ToByte(y);
MessageBox.Show(x.ToString());zaten siz
x = convert.
diyince bir çok seçenek gelicek
mesela
convert.tosingle
to single "float" tipine çevirir
bu düzeltme için özür dilerim...,
bir örnek daha koyarsak
örnek:
string a = "345";
int sayi;
sayi = Convert.ToInt32(a);bu örnektede sting tipini int'e çevirioruz
takıldığınız yerde ben buradayım...
-
paylaşımın için teşekkür ederim arkadaşım ama şöyle birşey yapsan daha verimli olur..
dökümanını bi worde yaz.. böyle kodları da millet copy paste yapmasın..onun yerine kodları resim şeklinde ver ve destek@tahribat.com a mail at.. dökümanını yayınlamasını rica et..bu şekilde karışık olmaz.. daha anlaşılır olur.. ayrıca bi sıraya koymalısın.. C#.net Dersleri 1 (Konu: Değişkenler) , C#.net Dersleri 2 (Konu: Msgboxlar) gibi..
-
ertan bunu yazdı:
-----------------------------paylaşımın için teşekkür ederim arkadaşım ama şöyle birşey yapsan daha verimli olur..
dökümanını bi worde yaz.. böyle kodları da millet copy paste yapmasın..onun yerine kodları resim şeklinde ver ve destek@tahribat.com a mail at.. dökümanını yayınlamasını rica et..bu şekilde karışık olmaz.. daha anlaşılır olur.. ayrıca bi sıraya koymalısın.. C#.net Dersleri 1 (Konu: Değişkenler) , C#.net Dersleri 2 (Konu: Msgboxlar) gibi..
-----------------------------musketlede görüştüm o döküman işini
fakat orjinal şeyler dışında kabul edilmiormuş
bende burda basit şeyleri paylaşıyorum
orjinalleri yapınca döküman yollucam :P
-
:) sende yazdıklarını bütün olarak yaz.. yani en az 10 tane konuyu tek dökümanda topla..o zaman yayınlanır..
-
Sisarp merhaba. Eline sağlık, metni güzel kaleme almışsın. C'den gelen alışkanlıkla değişkenler yerli yabancı bütün c# dökümanlardan Class'lardan bağımsız anlatılmaktadır. Başlangıç için bu tercih yanlış sayılmaz. Gerçekte ise değişkenler, içinde tanımlandıkları Class'ın birer alanıdır. Hemen eklemek gerek: Herhangi bir metodun içinde tanımlanan değişken metodun sınırları dışına çıkıldığında yaşamadığı için Class'ın alanı olarak görülmesi veya görülmemesi birşey ifade etmiyor.
-
Sağoalsın dayı, tip dönüşümünü iyi anlatmışsın ama ben şunu merak ediyorum : Convert metodu ile Parse metodu arasında ne fark var bi ara onu da yazar mısın biliyorsan?
-
StigmatA bunu yazdı:
-----------------------------
Sağoalsın dayı, tip dönüşümünü iyi anlatmışsın ama ben şunu merak ediyorum : Convert metodu ile Parse metodu arasında ne fark var bi ara onu da yazar mısın biliyorsan?
-----------------------------Parse ile INT e çeviriyorsun,
Ayrıca Parse ile DateTime vs gibi özel formatlara da çevirebiliyorsun.
Stringleri INT e çevirirken özel durumlar kullanabildiğin bir fonksiyon
ama Parse(String) olarak kullanacaksan bir farkı yok.