checked, unchecked ve is, as deyimleri

Bazı aritmatiksel veya mantıksal işlermler hata vermeyen ama sonucu yanlış olan işlemler olabiilir. Mesala bir int türü -214748648 ile -2147483647 arasındaki sayılırı tanımlayabiliriz. İki sayının toplamı bu değerleri aşarsa taşma meydana gelir, hata fırlatmaz faka sonuz yanlıştır. Bu gibi durumlara sonucun denetlenmesi ve hata fırlatması için checked deyimi kullanılır.

int ten = 10;
int i2 = 2147483647 + ten;
Console.WriteLine(i2);

Bu işlemin sonucu yanlış çıkacaktır. Bukodu checked kullanılarak güvenli hale getirelim.

// tek satırda
Console.WriteLine(checked(2147483647 + ten));

// veya blok olarak yazabiliriz.
checked
{
    int i3 = 2147483647 + ten;
    Console.WriteLine(i3);
}

unchecked deyimi ise kontrol edilmeden atama işlemleri yapar. Aslında hiçbir şey yazmadan atama işlemi yaparsak unchecked gibi işlem yapılır, buna ne gerek var diyebilirsiniz. Bunun cevabı aşağıdaki kod gizli. Güvenli bir alanda yok yere işlem maliyeti artmasın diye güvensiz bir bölge oluşturabilirsiniz.

checked
        { 
            // güvenli bölge
            unchecked
            { 
               //güvensz bölge
            }
            // güvenli bölge
        }

as öperatörü

Bu operatör dinamic tipler kullanırken çok kullanılanışlıdır, çünkü türünü bilmediğimiz bir çok tiple çalışır, değer atamaları yaparız.. Eğer tip uyuşmazlığı riski varsa, bu operatörü kullanarak exception alınmamasını sağlayabiliriz.

class Program
    {
        static void Main(string[] args)
        {
            object prog = new int();
 
            string s = prog as string;
 
            if (s == null)
            {
                Console.WriteLine("geçerli bir string girilmedi.");
            }
            else
            {
                Console.WriteLine("uygun bir tip ile atama yapıldı");
            }
        }
    }

İkinci bir örnegi msdn den vereceğim Bu sefer kalıtım almış iki tür var.

class csrefKeywordsOperators
   {
       class Base
       {
           public override string  ToString()
           {
	             return "Base";
           }
       }
       class Derived : Base 
       { }

       class Program
       {
           static void Main()
           {
               Derived d = new Derived();
               Base b = d as Base;
               if (b != null)
               {
                   Console.WriteLine(b.ToString());
               }
           }
       }
   }

Ekran çıktısı base olacaktır. Derived türü aslında Base türüründen türemiştir.

is operatörü

Bir alanın türünü o anda bilmek isteyebilriz.

 

 

using System;

namespace ConsoleApplication14
{
    class GuvenliKes
    {
        class Hayvan
        {
            public void Ye() { Console.WriteLine("yemeğimi yiyiyorum..."); }
            public override string ToString()
            {
                return "Ben bir hayvanım.";
            }
        }
        class Memeli : Hayvan { }
        class Maymun : Memeli { }

        class Yildiz { }

        static void Main()
        {
            GuvenliKes uygulamam = new GuvenliKes();

            Maymun g = new Maymun();
            uygulamam.IsKullan(g);


            uygulamam.AsKullan(g);


            Yildiz sn = new Yildiz();
            uygulamam.AsKullan(sn);


            int i = 5;
            uygulamam.AsIleNullKullan(i);


            double d = 9.78654;
            uygulamam.AsIleNullKullan(d);


            System.Console.WriteLine("çıkış içi tuşa bas.");
            System.Console.ReadKey();
        }

        void IsKullan(Hayvan a)
        {
            if (a is Memeli)
            {
                Memeli m = (Memeli)a;
                m.Ye();
            }
        }

        void AsKullan(object o)
        {
            Memeli m = o as Memeli;
            if (m != null)
            {
                Console.WriteLine(m.ToString());
            }
            else
            {
                Console.WriteLine("{0} hayvan değil.", o.GetType().Name);
            }
        }

        void AsIleNullKullan(System.ValueType val)
        {
            int? j = val as int?;
            if (j != null)
            {
                Console.WriteLine(j);
            }
            else
            {
                Console.WriteLine(val.ToString() + "Dönüştürülemedi.. ");
            }
        }
    }
}

 

x

 

 

 

 

Add comment

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.