C# Tip Değişimi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    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österdik

    sonuç 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üşüm

    bundada 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 çeviriyor

    aşş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ında

    int:-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ürsek

    00000000|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

     


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    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...


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ertan
    ertan's avatar
    Kayıt Tarihi: 21/Temmuz/2005
    Erkek

    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..


    Bundan sonra sadece insan olanlarla muhattap olacağım.. Ona göre karşıma gelin...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    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


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ertan
    ertan's avatar
    Kayıt Tarihi: 21/Temmuz/2005
    Erkek

    :) 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..


    Bundan sonra sadece insan olanlarla muhattap olacağım.. Ona göre karşıma gelin...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Memik_
    Memik_'s avatar
    Kayıt Tarihi: 15/Temmuz/2008
    Erkek
    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.

    Memik YANIK - www.memikyanik.com
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek
     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?

    Sen hiç kaval çaldın mı?
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Musket
    Musket's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 09/Haziran/2002
    Erkek

    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.

     

     

     

Toplam Hit: 2931 Toplam Mesaj: 8