Deyimler (C# Programlama Kılavuzu)

Bir programın gerçekleştirilir eylemler deyimlerinde ifade edilir. Yaygın eylemler arasında değişkenleri bildirme, değer atama, yöntemleri çağırma, koleksiyonlar arasında döngü gerçekleştirme ve belirli bir koşula bağlı olarak bir veya başka bir kod bloğuna dallanma sayılabilir. Deyimlerin bir programda yürütülmesi sırası denetim akışı veya yürütme akışı olarak adlandırılır. Bir program her çalıştırıldığında, programın çalışma zamanında aldığı girişe nasıl tepki gösterdiğine bağlı olarak denetim akışı farklılık gösterebilir.

Deyim, noktalı virgülle biten tek bir kod satırından veya bir bloktaki bir dizi tek satırlı deyimden oluşabilir. Deyim bloğu köşeli ayraç içine {} alınır ve iç içe bloklar içerebilir. Aşağıdaki kodda iki tek satırlı deyim örneği ve çok satırlı deyim bloğu gösterilmektedir:

    public static void Main()
    {
        // Declaration statement.
        int counter;

        // Assignment statement.
        counter = 1;

        // Error! This is an expression, not an expression statement.
        // counter + 1;

        // Declaration statements with initializers are functionally
        // equivalent to  declaration statement followed by assignment statement:
        int[] radii = [15, 32, 108, 74, 9]; // Declare and initialize an array.
        const double pi = 3.14159; // Declare and initialize  constant.

        // foreach statement block that contains multiple statements.
        foreach (int radius in radii)
        {
            // Declaration statement with initializer.
            double circumference = pi * (2 * radius);

            // Expression statement (method invocation). A single-line
            // statement can span multiple text lines because line breaks
            // are treated as white space, which is ignored by the compiler.
            System.Console.WriteLine("Radius of circle #{0} is {1}. Circumference = {2:N2}",
                                    counter, radius, circumference);

            // Expression statement (postfix increment).
            counter++;
        } // End of foreach statement block
    } // End of Main method body.
} // End of SimpleStatements class.
/*
   Output:
    Radius of circle #1 = 15. Circumference = 94.25
    Radius of circle #2 = 32. Circumference = 201.06
    Radius of circle #3 = 108. Circumference = 678.58
    Radius of circle #4 = 74. Circumference = 464.96
    Radius of circle #5 = 9. Circumference = 56.55
*/

Deyim türleri

Aşağıdaki tabloda C# dilindeki çeşitli deyim türleri ve bunların ilişkili anahtar sözcükleri, daha fazla bilgi içeren konulara bağlantılar listelenmiştir:

Kategori C# anahtar sözcükleri / notları
Bildirim deyimleri Bildirim deyimi yeni bir değişken veya sabit ekler. Değişken bildirimi isteğe bağlı olarak değişkene bir değer atayabilir. Sabit bir bildirimde atama gereklidir.
İfade deyimleri Bir değeri hesaplayan ifade deyimlerinin değeri bir değişkende depolaması gerekir.
Seçim deyimleri Seçim deyimleri, belirtilen bir veya daha fazla koşula bağlı olarak kodun farklı bölümlerine dallanmanızı sağlar. Daha fazla bilgi için aşağıdaki konulara bakın:
Yineleme deyimleri Yineleme deyimleri, diziler gibi koleksiyonlar arasında döngü yapmanızı veya belirtilen koşul karşılanana kadar aynı deyim kümesini tekrar tekrar gerçekleştirmenizi sağlar. Daha fazla bilgi için aşağıdaki konulara bakın:
Atlama deyimleri Jump deyimleri denetimi kodun başka bir bölümüne aktarır. Daha fazla bilgi için aşağıdaki konulara bakın:
Özel durum işleme deyimleri Özel durum işleme deyimleri, çalışma zamanında oluşan olağanüstü koşullardan düzgün bir şekilde kurtarmanızı sağlar. Daha fazla bilgi için aşağıdaki konulara bakın:
checked ve unchecked ve unchecked deyimleri, checked sonuç elde edilen değeri tutamayacak kadar küçük bir değişkende depolandığında tam sayı türünde sayısal işlemlerin taşmaya neden olup olmayacağını belirtmenize olanak tanır.
Deyimi await Bir yöntemi zaman uyumsuz değiştirici ile işaretlerseniz yönteminde await işlecini kullanabilirsiniz. Denetim zaman uyumsuz yöntemdeki bir await ifadeye ulaştığında, denetim çağırana geri döner ve beklenen görev tamamlanana kadar yöntemdeki ilerleme askıya alınır. Görev tamamlandığında, yürütme yönteminde devam edebilir.

Basit bir örnek için Yöntemler'in "Zaman Uyumsuz Yöntemler" bölümüne bakın. Daha fazla bilgi için bkz . Async ve await ile Zaman Uyumsuz Programlama.
Deyimi yield return Yineleyici, liste veya dizi gibi bir koleksiyon üzerinde özel bir yineleme gerçekleştirir. Yineleyici, her öğeyi birer birer döndürmek için yield return deyimini kullanır. Bir yield return deyime ulaşıldığında koddaki geçerli konum hatırlanır. Yineleyici bir sonraki sefer çağrıldığında yürütme bu konumdan yeniden başlatılır.

Daha fazla bilgi için bkz . Yineleyiciler.
Deyimi fixed sabit deyimi, çöp toplayıcının taşınabilir bir değişkeni yeniden konumlandırmasını engeller. Daha fazla bilgi için bkz . düzeltildi.
Deyimi lock lock deyimi, kod bloklarına erişimi aynı anda yalnızca bir iş parçacığıyla sınırlamanıza olanak tanır. Daha fazla bilgi için bkz . kilitleme.
Etiketli deyimler Bir deyime bir etiket verebilir ve sonra etiketli deyimine atlamak için goto anahtar sözcüğünü kullanabilirsiniz. (Aşağıdaki satırdaki örne bakın.)
Empty deyimi Boş deyim tek bir noktalı virgülden oluşur. Hiçbir şey yapmaz ve deyimin gerekli olduğu ancak hiçbir eylemin gerçekleştirilmesi gerekmeyen yerlerde kullanılabilir.

Bildirim deyimleri

Aşağıdaki kod, ilk ataması olan ve olmayan değişken bildirimlerinin örneklerini ve gerekli başlatmayı içeren sabit bir bildirimi gösterir.

// Variable declaration statements.
double area;
double radius = 2;

// Constant declaration statement.
const double pi = 3.14159;

İfade deyimleri

Aşağıdaki kodda atama, atama ile nesne oluşturma ve yöntem çağırma gibi ifade deyimleri örnekleri gösterilmektedir.

// Expression statement (assignment).
area = 3.14 * (radius * radius);

// Error. Not  statement because no assignment:
//circ * 2;

// Expression statement (method invocation).
System.Console.WriteLine();

// Expression statement (new object creation).
System.Collections.Generic.List<string> strings =
    new System.Collections.Generic.List<string>();

Empty deyimi

Aşağıdaki örneklerde boş bir deyim için iki kullanım gösterilmektedir:

void ProcessMessages()
{
    while (ProcessMessage())
        ; // Statement needed here.
}

void F()
{
    //...
    if (done) goto exit;
//...
exit:
    ; // Statement needed here.
}

Katıştırılmış deyimler

Yineleme deyimleri gibi bazı deyimlerde her zaman bunları izleyen ekli bir deyim bulunur. Bu katıştırılmış deyim, tek bir deyim veya bir deyim bloğunda köşeli ayraçlar içine {} alınmış birden çok deyim olabilir. Tek satırlık katıştırılmış {} deyimler bile aşağıdaki örnekte gösterildiği gibi köşeli ayraç içine alınabilir:

// Recommended style. Embedded statement in  block.
foreach (string s in System.IO.Directory.GetDirectories(
                        System.Environment.CurrentDirectory))
{
    System.Console.WriteLine(s);
}

// Not recommended.
foreach (string s in System.IO.Directory.GetDirectories(
                        System.Environment.CurrentDirectory))
    System.Console.WriteLine(s);

Köşeli ayraç içine {} alınmamış ekli deyim, bildirim deyimi veya etiketli bir deyim olamaz. Bu, aşağıdaki örnekte gösterilmiştir:

if(pointB == true)
    //Error CS1023:
    int radius = 5;

Hatayı düzeltmek için katıştırılmış deyimini bir bloğa yerleştirin:

if (b == true)
{
    // OK:
    System.DateTime d = System.DateTime.Now;
    System.Console.WriteLine(d.ToLongDateString());
}

İç içe deyim blokları

Aşağıdaki kodda gösterildiği gibi deyim blokları iç içe yerleştirilebilir:

foreach (string s in System.IO.Directory.GetDirectories(
    System.Environment.CurrentDirectory))
{
    if (s.StartsWith("CSharp"))
    {
        if (s.EndsWith("TempFolder"))
        {
            return s;
        }
    }
}
return "Not found.";

Ulaşılamıyor deyimleri

Derleyici, denetim akışının hiçbir koşulda belirli bir deyime ulaşamadığını belirlerse, aşağıdaki örnekte gösterildiği gibi uyarı CS0162 üretir:

// An over-simplified example of unreachable code.
const int val = 5;
if (val < 4)
{
    System.Console.WriteLine("I'll never write anything."); //CS0162
}

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin Deyimler bölümüne bakın.

Ayrıca bkz.