C# Net Giriş

Son güncelleme:
  • c - net giriş - Veri İsimleri
    C# , C ve C++ dillerinden çıkma olup, basit, modern, nesne tabanlı(object oriented) ve çeşit-güvenirlikli(type-safe) bir programlama dilidir. C#, Visual Basic dilinin kolaylığına ve C nin gücüne sahip diyebiliriz. C# progralama dilini kullanarak program yazabilmek için Microsoft Visual Studio.NET'i kullanabilirsiniz. Visual Studio.NET C#'ın yanısıra VB.NET ve Visual C++ programlama dillerini ve bunun yanında VBScript ve JScript script dillerini içerir. Bütün bu diller NGWS (Next Generation Windows Services ) platformu üzerine yapılandırılmış ve bu platformun gücünü ve kolaylıklarını kullanmaktadırlar. NET yazılım geliştirme Kit'i bize CLS (Comman Language Subset) uyumlu diller (yani .NET dilleri) ve class kütüphanelerini kullanabilme imkanı sunar. Bunun anlamı C# yeni bir dil olmasına rağmen Visual Basic ve Visual C++ 'ın kullandığı zengin class kütüphaneleri kullanabilmesi demektir.

    Class

    C# programları, her biri fonksiyon kod birimi olan sınıflardan (class) oluşur. Visual C# .Net'te bir class, class anahtar kelimesi ve class ismi ile tanımlanır.

    class Araba{}

    Her C# programı için bir giriş noktası(entry point) gerekmektedir. Bu şekilde program nereden çalışması gerektiğini bilecektir. Aşağıdaki örnekte Main fonksiyonu bunu belirtir. Program ilk çalıştığında direkt Main fonksiyonunu çalıştıracaktır.

    class Car
    {
    static void Main()
    {
    }
    }

    Değişkenler ve Sabitler

    Değişken tanımlamak için kullanılan sentaks:

    VeriTipi DeğişkenIsmi;

    Aynı veri tipine sahip değişkenleri, aynı satırda tanımlamak için kullanılan sentaks aşağıda belirtilmiştir.

    VeriTipi DeğişkenIsmi_1, DeğişkenIsmi_2, DeğişkenIsmi_n ;
    Sabitler ve değişkenlerin tanımlanması ve bunlara değer ataması bir çok farklı şekilde olabilir. Bunları aşağıdaki örnekte görebiliriz.

    using System;
    class sayi
    {
    static void Main(){
    int a= 2; //Bir integer tanımlanıyor ve aynı anda değer atanıyor
    int b = 4, c = 5; //İki farklı integer tanımlanıyor ve aynı anda farklı //değerler atanıyor.
    const d = 6; // Bir sabit tanımlanıyor ve değer atanıyor.
    const e = 5, f = 7;
    int g; // Bir integer sadece tanımlanıyor
    int h, j;
    g = 54; // Daha önceden tanımlanmış bir integer a değer atanıyor.
    h = 32;
    j = 12;
    }
    }

    Veri İsimleri

    C# büyük/küçük harf duyarlılığına sahiptir (case-sensitive). ODA, oda ve Oda farklı isimler olarak kabul edilir. Örneğin temel fonksiyon (main function) her zaman Main şeklinde yazılır.



    Temel Tipler

    String

    Temel veri tiplerinden biri olan string, C#'ta string anahtar kelimesi ile tanımlanır.

    string Mesaj;

    String tanımlama ve ilklendirme (initialize) örnekleri:

    string Bos = "";
    string Sinif = "B";
    string Isim = "Anil Yugen";
    string Mesaj = "Hos geldiniz! ";


    Değişkenler

    Boolean tipi için bool anahtar kelimesi kullanılır. Boolean değişken tanımlama ve true/false değeri atamaya örnek:

    bool Cevap1, Cevap2;

    Cevap1 = true;
    Cevap2 = false;

    Karakterler

    Temel veri tiplerinden karakter(character) char anahtar kelimesi ile gösterilir. İngiliz alfabesindeki harfler ( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z) ve diğer dillerdeki ekstra semboller, rakamlar ve ` ~ ! @ # $ % ^ & * ( ) - _ = + [ { ] } \ | ; : ' < ? . / , > " sembolleri gibi herhangi bir Unicode karakteri (16 bit), Visual C# .Net'te char veri tipi ile tanımlanır.

    Char tipli bir değişken ilklemek için karakter tek tırnak işareti içine alınır. Örnek:

    char Sinif = 'A';
    Enumerator

    C#'ta enumerator tanımlama:
    enum Renk { sari, turuncu, mavi };

    C#'ta enumerator'lar class içinde ancak fonksiyon dışında oluşturulmalıdır. Her eleman bir doğal sayı değeri taşır. C#'ta enumerator elemanlarına karakter değeri (char tipli) atanamaz.

    Bir enumerator tanımladıktan sonra, bu enumarator tipi ile bir değişken tanımlamak ve bu değişkene enumerator elemanlarından birini atamak da mümkündür. Örnek:

    using System;

    class Ajanda
    {
    enum gunler { pazar, pazartesi, sali, carsamba, persembe, cuma, cumartesi};

    static void Main()
    {
    gunler gun = gunler.carsamba ;
    }
    }

    Bir değişkenin taşıdığı değeri write( ) metodunu kullanarak öğrenebiliriz. Örnek:

    using System;

    class Ajanda
    {
    enum gunler { pazar, pazartesi, sali, carsamba, persembe, cuma, cumartesi};

    static void Main()
    {
    gunler gun = gunler.carsamba ;
    Console.WriteLine(gun);
    }
    }

    Konsolda gösterilen:
    carsamba

    Her elemana otomatik olarak bir doğal sayı değeri atanır. Bunun sonucunda ilk elemanın değeri 0, ikinci elemanın değeri 1, üçüncü elemanın değeri 2 olur, vb. Elemanlara bu değerler dışında da değer atamak mümkündür.

    enum Renk { sari=5, turuncu, mavi };

    Yukarıdaki atamadan sonra sari 5, turuncu 6, mavi ise 7 değerini alır. Birden fazla elemana da değer atamak mümkündür. Örnek:

    enum Renk { sari=3, turuncu=8, mavi };

    Bu atamadan sonra sari 3, turuncu 8 ve mavi 9 değerini alır.






    Aşağıdaki tablo önceden tanımlanmış tipler (predefined types) ve örnekleri göstermektedir.

    C# Tipi Açıklama .Net Framework (System) Tipi Değer Aralığı Tanımlama ve Değer Atama
    object Diğer tüm çeşitlerin temel yapısı System.Object - object o = New Class1();
    string String çeşidi: Bir string Unicode karakterler topluluğudur. (System.String - string s = "Merhaba!";
    sbyte 8-bit signed tam sayı System.Sbyte -128'den 127'e kadar sbyte deger = 12;
    short 16-bit signed tam sayı System.Int16 -32768'den 32767'e kadar short deger = 12;
    int 32-bit signed tam sayı System.Int32 -2147483648'den 2147483647'e kadar int deger = 12;
    long 64-bit signed tam sayı System.Int64 -9223372036854775808'den 9223372036854775807'e long deger = 12;
    byte 8-bit unsigned tam sayı System.Byte 0'dan 255'e byte deger = 12;
    ushort 16-bit unsigned tam sayı System.Uint16 0'dan 65535'e ushort deger = 12;
    uint 32-bit unsigned tam sayı System.UInt32 0'dan 4294967295'e uint deger = 12;
    ulong 64-bit unsigned tam sayı System.Uint64 0'dan 18446744073709551615'e ulong deger = 12;
    float Tek-yönlü floating Point Type System.Single Yaklaşık olarak ±1.5 x 10-45 'ten ±3.4 x 1038 'e float deger = 1.23;
    double Çift yönlü floating type System.Double Yaklaşık olarak ±5.0 x 10-324 to ±1.7 x 10308 double deger = 1.23;
    bool Boolean değer: True veya False olabilir. System.Boolean true ya da false bool deger = True;
    char Karekter Type : Unicode karekter System.Char Herhangi bir Unicode karakteri (16 bit) char a = 'a';
    decimal 28 anlamlı basamaktan oluşan sayı System.Decimal Yaklaşık olarak ±1.0 x 10-28 to ±7.9 x 1028 decimal deger = 1.23;



    METOT (METHOD)
    C# programları, her biri fonksiyon kod birimi olan sınıflardan (class) oluşur. Class'lar içinde yer alan ve belli bir işlemi gerçekleştirmek için kullandığımız üyelere de metot (method) denir. Metotları programlar içinde tıpkı birer komut gibi kullanabilir ve nesnelerimiz üzerinde çeşitli işlemleri yapabiliriz.
    Metotları Tanımlamak
    Bir fonksiyon, bir yordam ya da bir procedure olarak düşünebileceğimiz, belli bir ad altında bir araya getirilmiş C# deyimlerine metot denir. Örnek:
    using System;
    class Merhaba
    {
    static void Deneme()
    {
    Console.WriteLine("Merhaba!");
    }

    static void Main()
    {
    Console.WriteLine("Main Metot");
    }

    }
    Main metodu, C# programı için uygulamanın başlangıç noktasıdır. WriteLine da bir metotdur, ancak Console sınıfının bir komutu gibi kullanılır. Deneme metodu ise Merhaba sınıfına ait bir metotdur.
    C#'da bütün metotlar bir sınıfa ait olmalıdır. Diğer dillerde (Visual Basic gibi) global olarak bir fonksiyon ve sub tanımı yapılabilmektedir.
    Metot Yapısı
    static void metot_adı()
    {
    //metodun kodu
    }

    Bir metodun adı tıpkı bir değişken adı gibi verilir. Bu arada metot adları küçük/büyük harf duyarlıdır (case-sensitive).
    Bunun dışında metot kodu, bir satır deyim bile olsa { } içinde yazılır.
    Metotların kullanımında diğer bir konu da parametrelerdir. Parametreleri metot adından sonra parantez içinde belirtilirler.
    Deneme();
    Console.WriteLine("Merhaba!");

    Parametre Kullanımı
    Parametreler metoda bilgi geçirilmesini sağlar. Bir metot tanımlandığında parantez içinde parametre listesine yer verilir.
    Örnek:
    static int Topla(int a , int b) //metot tanımlama
    {
    return a + b;
    }

    static void Main( )
    {
    Console.WriteLine(Topla(5,10)); //metot çağırma

    }
    Topla metodu daha önceki örneklerden farklı olarak int tipi ile tanımlanmıştır. Böylece metodun integer bir değer döndüreceğini belirtilmiştir. Metod değer döndürme işlemini return ifadesi ile gerçekleştirir.
    Metotlar -döndürecekleri değerin tipine göre- double, string gibi temel tiplerden biri, dizi ve hatta bir class tipi ile de tanımlanabilir. Void anahtar kelimesi ile tanımlanırsa herhangi bir değer döndüremez (böylece return ifadesi içermeleri gerekmez).
    Parametre Gönderme
    C#'ta metotlara parametre göndermek için iki yöntem kullanılabilir: Değer gönderme ve referans gönderme. Yukarıdaki örnekte Topla() metodunda değer gönderme yapılmaktadır. Aşağıdaki örnekte ise YerDegistir metodu argüman olarak değişkenlerin referansını alır.

    using System;
    class Degistir {
    static void YerDegistir(ref int x, ref int y) {
    int t = x;
    x = y;
    y = t;
    }
    static void Main() {
    int a = 1;
    int b = 2;

    Console.WriteLine("once: a = {0}, b = {1}", a, b);
    YerDegistir(ref a, ref b); //ref modifier'ı metot cagirilirken de kullanılır
    Console.WriteLine("sonra: a = {0}, b = {1}", a, b);
    }
    }

    Çıktı:

    once: a=1, b=2
    sonra: a=2, b=1

    Bloklar

    Bloklar işlem gruplarıdır ve {} işaretleri arasına yazılırlar. Bu sayede herhangi bir for döngüsünün yada buna benzer başka bir işlemin hangi komut satırlarını içerdiği anlaşılır.

    using System;
    Class kuti
    { // Blok 1 başlıyor
    static void Main(){ // Blok 2 başlıyor
    Console.WriteLine("kuti");
    } // Blok 2 Son
    } // Blok 1 Son




    Operatörler


    Operatör Anlam Örnek Tersi
    == Eşit a == b !=
    != Eşit Değil 12 != 7 ==
    < Küçük 25 < 84 >=
    <= Küçük Eşit e <= f >
    > Büyük 248 > 55 <=
    >= Büyük Eşit Deg1 >= Deg2 <



    Döngüler (Loop Statements)

    while

    While statement bir işlemi herhangi bir boolean önerme sağlanıncaya kadar yapmak için kullanılır. Örnek:

    int i = 0;
    while ( i < 5 )
    {
    Console.WriteLine ( i );

    ++i;
    }

    Konsolda görülecek sonuç:
    0
    1
    2
    3
    4


    for

    For statement'ta işlem belirtilen önerme doğru olduğu sürece yapılır.

    int i = 0;
    for ( int i = 0; i < 5; i++ )
    {
    Console.WriteLine ( i );
    }

    Konsolda görülecek sonuç:
    0
    1
    2
    3
    4




    do ... while

    Bir işlemi bir yada daha fazla kez yapmak için kullanılır.

    int i = 0;
    do
    {
    Console.WriteLine ( i );

    i++;
    }
    while ( i < 5 );

    Do ... while döngüsünün while döngüsünden tek farkı koşulun doğruluğunun döngünün sonunda kontrol edilmesidir.


    foreach

    Bir koleksiyon(collection) içerisindeki elemanları ayırıp her eleman için işlemleri tekrarlar.

    string [] isimler = new string[] { "Ali", "Zeynep", "Veli", "Deniz" };
    foreach ( string isim in isimler )
    {
    Console.WriteLine ( isim );
    }

    Konsoldaki görüntü:
    Ali
    Zeynep
    Veli
    Deniz


    Koşullu Operatörler (Conditional Operators)

    if ... else

    Örnek:

    using System;
    class ifDeneme
    {
    static void Main(string[] a){
    if(a.Length == 0)
    {
    Console.WriteLine("Gelen string boş");
    }
    else
    {
    Console.WriteLine("Gelen string = {0}",a);
    }
    }





    İş Akışı İfadeleri (Flow Control Statements)

    break

    En yakın switch, while, do, for veya foreach ifadesinden çıkılmasını sağlar. Örnek:

    string [] isimler = new string[] { "Ali", "Zeynep", "Veli", "Deniz" };
    foreach ( string isim in isimler )
    {
    Console.WriteLine ( isim );

    if ( isim == "Veli" )
    break;
    }

    Yukarıdaki örnekte isimler string'i içindeki ilerleme Veli elemanına ulaşıldığında durur ve program döngü dışından devam eder. Konsolda elde eilecek görüntü:

    Ali
    Zeynep
    Veli

    continue

    Continue ifadesi de döngülerde kullanılır. Bu ifadeye ulaşıldığında, program ifadeden sonraki satırla devam edeceğine döngünün bir sonraki adımına geçer. Örnek:

    string [] isimler = new string[] { "Ali", "Zeynep", "Veli", "Deniz" };
    foreach ( string isim in isimler )
    {
    if (isim == "Zeynep" )
    continue;

    Console.WriteLine (isim);
    }

    Konsolda görünen:
    Ali
    Veli
    Deniz


    switch

    Verilen herhangi bir ifadenin aldığı değere göre işlemleri yapar. Birden fazla if ... else ifadesi yerine kullanılır. Örnek:

    int i = 6;

    switch ( i )
    {
    case 5:
    Console.WriteLine( "Cevap : " + 5 );
    break;
    case 6:
    Console.WriteLine( "Cevap : " + 6 );
    break;
    case 3:
    Console.WriteLine( "Cevap : " + 3 );
    break;
    case 4:
    Console.WriteLine( "Cevap : " + 4 );
    break;
    default:
    Console.WriteLine( " Cevap : " + i );
    break;
    }

    Konsolda görünen:

    Cevap : 6


    return

    Return ifadesi caller(yani çağıran) fonksiyona bulunduğu fonksiyondan değer gönderir. Return bir değer gönderen fonksiyonlarda kullanılır. Void fonksiyonlarda kullanılamaz. Çünkü void fonksiyon herhangi bir değer göndermez.



    throw

    Throw ifadesi bir istisna (exeption) atar.


    try

    Try statement bir blok içerisindeki işlemler sırasında oluşan bir exceptionı yakalamak için kullanılır.


    goto

    Goto Statement'ı ise program içerisinde atlamalarda kullanılır.

    using System;
    class gotoDeneme
    {
    static void Main(){
    int i = 2;
    goto B:
    A: i = i + 1;
    return;
    B: i = i * i;
    goto A:
    }
    }

    Bu işlem sonucu i'nin alacağı değer 5 tir.






    Diziler

    C#'ta diziler tek yönlü de (single-dimensional) olabilir çok yönlü de (multi-dimensional). Bunun yanında C# jagged ve rectangular dizilerin ikisini de destekler. Tek yönlü bir dizi oluşturan örnek program aşağıda verilmiştir.

    using System; //kullandığımız namespace
    class Dizi //class adı
    {
    static void Main() { //programın giriş noktası
    int[] dizi = new int[5]; //yeni bir dizi tanımlıyoruz. Bu dizi 5 elemanlı ve değer olarakta integer değer alıyor. [] işareti bunun bir array olduğunu ve int de bunun değerinin integer olduğunu belirtiyor.
    for (int i = 0; i < dizi.Length; i++) //0 dan dizinin uzunluğuna kadar bir döngü kuruyoruz.
    dizi = i * i; // dizinin i. elemanına i * i değerini atıyoruz.
    for (int i = 0; i < dizi.Length; i++) // yine 0 dan dizi uzunluğuna kadar bir for döngüsü oluşturuyoruz.
    Console.WriteLine("dizi[{0}] = {1}", i, dizi); //Ekrana dizinin elemanını ve değerini yazdırıyoruz. Burada dizi[{0}] ve = {1}demesinin nedeni buralara yazılacak bilginin değişken olması ve bunu yazarken daha sonra ,i,dizi deki sıraya göre yazılmasıdır. Yani 0 ın yerine ilk değişken yani i 1 in yerine ise 2. değişken yani dizi yazılacaktır.
    }
    }

    Yukarıdaki programın çıktısı:
    dizi[0] = 0
    dizi[1] = 1
    dizi[2] = 4
    dizi[3] = 9
    dizi[4] = 16

    Tek yönlü ve çok yönlü dizi oluşturma örnekleri:

    class Dizi
    {
    static void Main() {
    int[] a1; // tek-yönlü dizi ve değerler integer
    int[,] a2; // 2-yönlü dizi ve değerler integer
    int[,,] a3; // 3-yönlü dizi ve değerler integer
    int[][] j2; // "jagged" dizi: dizinin dizisi
    int[][][] j3; // dizinin dizisinin dizisi
    }
    }
    Dizilere değerlerinin başlangıçta verilmesi ise aşağıdaki gibi yapılır.
    int [] array1 = {1,2,3};


    alıntıdır..
0 0 0
  • teşekkürler emeğine sağlık
0 0 0
  • teşekkürler ama dizilerden sonraki sıralama ve kabarcık sıralama göstericiler gibi konuların kodları lazım bana eğer devamını koyarsanız sevinirim
0 0 0