Aracılığıyla paylaş


Deyimler (C# Programlama Kılavuzu)

Bir programın gerçekleştirdiği eylemler ifadelerle 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 {} parantez 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 #{counter} is {radius}. Circumference = {circumference:N2}");

            // 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 ifadeleri 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 zorunludur.
İfade deyimleri Bir değeri hesaplayan ifade deyimlerinin değeri bir değişkende depolaması gerekir.
Seçim ifadeleri 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:
Döngü 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 ifadeleri Jump deyimleri denetimi kodun başka bir bölümüne aktarır. Daha fazla bilgi için aşağıdaki konulara bakın:
İstisna işleme deyimi Özel durum işleme deyimleri, çalışma zamanında oluşan istisnai durumlardan etkin bir şekilde kurtulmanızı sağlar. Daha fazla bilgi için aşağıdaki konulara bakın:
checked ve unchecked ve checked deyimleri, unchecked 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.
await ifadesi Bir metodu async değiştiricisi ile işaretlerseniz, yöntemde await işlecini kullanabilirsiniz. Zaman uyumsuz yöntemde bir await ifadesine ulaşıldığında, kontrol çağırana geri döner ve bekleyen işlem tamamlanana kadar yöntemdeki ilerleme duraklatılır. Görev tamamlandığında, işlem metoda 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. Asenkron Programlama - async ve await kullanımı.
yield return ifadesi 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 deyimine 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.
fixed ifadesi 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.
lock ifadesi 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. kilit.
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.)
Boş deyim 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.

Tanımlama ifadeleri

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);

// Expression statement (result discarded).
int x = 0;
x++;

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

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

Boş ifade

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ış ifadeler

Yineleme deyimleri gibi bazı deyimlerde her zaman bunları izleyen ekli bir deyim bulunur. Bu gömülü ifade, tek bir ifade veya köşeli parantezler içinde {} bulunan birden fazla ifadeden oluşan bir ifade bloğu olabilir. Tek satırlık gömülü deyimler bile, aşağıdaki örnekte gösterildiği gibi {} etiketleri 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);

{} etiketi içine alınmamış gömülü bir ifade, bir 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 gömülü ifadeyi bir bloğa yerleştirin.

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

İç içe ifade 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şılamayan ifadeler

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# dil belirtimi

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

Ayrıca bkz.