C# Switch case ile döngünün içinden çıkmak

Kodum malesef pek okunaklı değil. Buraya atmam durumunda pek bişey anlaşılmayacaktır ama şöyle basit bir şekilde anlatabilirim sanırım. İsterseniz atabilirim genede kodu.
C#:
for(int i=0;i<10;i++)
{
    switch(i)
    {
        case 1:
            if(DöngüyüKırmamGerekenBirDurum==true)
            {
                break; //Burada komple döngüyü kırmam gerekiyor ama bu komut sadece switch case i kırıyor.
            }
    }
 
}

For dışına bir bool değişken ekle.
Case1'e if yerleştir, Bool'u true yap.

Switch dışına da bir if yerleştir, bool true ise break çalıştır, döngüyü kırsın.
 
For dışına bir bool değişken ekle.
Case1'e if yerleştir, Bool'u true yap.

Switch dışına da bir if yerleştir, bool true ise break çalıştır, döngüyü kırsın.
Evet. Pek verimli olmayacak olsa da.

C#:
        _ = 0;
        for(int i=0;i<10;i++)
        {
            if (_) {
                break;
            }
            switch(i)
            {
                case 1:
                    if(i == 1)
                    {
                        _ = 1;
                        Console.WriteLine("Switch bitti.");
                        break;
                    }
            }   
        }

Şahsen bu algoritma mantıklı değil.
Katılıyorum. Mantıksız ve verimsiz.
 
Tam olarak ne yapmak istediğinizi anlatabilir misiniz?

Şahsen bu algoritma mantıklı değil.
Bir filtreleme sistemi. Düzensiz dizileride kullanarak birşeyler yapmaya çalıştım ama pek mantıklı olmadığını bende farkettim. Genede merak ettiğim için sormuştum yapılabilirmi diye. Teşekkür ederim yardımcı olan herkese.
 
Şimdi, For içinde Switch case kullanmak mantıksız değil. Ancak sizin yapınız mantıksız doğrusu. Bunun yerine OOP, yani nesne tabanlı programlama mantığına göre kod yazmanızı öneririm.

Class'lar ile çalışın.
 
Tuhaf bir şey yapmaya çalışıyorsunuz. Bunu switch içinde nasıl yapacağınızı araştırmak yerine alternatiflere yönelin. Ne yapmaya çalıştığınız anlaşılmıyor ama yanlış metodu kullandığınız belli.

Ha illa switch case kullanacaksanız switch komutundan önce if koyun döngüden çıkmak için. Ya da (ki kötü kod dizaynı) switchten önce bir değikeni 0’a ayarlayın, switch içindekiki o ifte de değişkene 1 atayın. Switchin sonunda o değişken 1’se looptan çıkın.
 
Merhaba! Switch-case yapısında, break ifadesi, yalnızca o case bloğundan çıkmayı sağlar, fakat döngüyü sonlandırmak için break ifadesini for döngüsünde kullanmanız gerekir. Bir if-else yapısı yazmak yerine, switch-case içerisinde bir kontrol mekanizması ekleyerek döngüden çıkabilirsiniz.

Bunu şu şekilde yapabilirsiniz:

  1. break anahtar kelimesini switch-case içerisinde kullanarak sadece switch'ten çıkın.
  2. Eğer döngüden tamamen çıkmak istiyorsanız, break komutunu for döngüsü için kullanın.
  3. İf-else yerine, switch içinde döngüyü sonlandırmak için bir kontrol değişkeni (örneğin bool exitLoop) kullanabilirsiniz.

    Örnek kod
  4. C#:
    bool exitLoop = false;
    
    for (int i = 0; i < 10; i++)
    {
        switch (i)
        {
            case 1:
                Console.WriteLine("Case 1 çalıştı.");
                break;
            case 2:
                Console.WriteLine("Case 2 çalıştı.");
                if (true)//* belirli bir koşul sağlanırsa */
                {
                    exitLoop = true; // Döngüden çıkılmasını isteyin.
                }
                break;
            case 3:
                Console.WriteLine("Case 3 çalıştı.");
                break;
            default:
                Console.WriteLine("Varsayılan case çalıştı.");
                break;
        }
    
        if (exitLoop)
        {
            break; // For döngüsünden çıkılır.
        }
    }
    
    Console.WriteLine("Döngüden çıkıldı.");

c# switch case kullanımı
 
Son düzenleme:
Eğer switch case'den sonra döngü durdurulduğunda çalışmasını istemediğiniz herhangi bir kod bloğu yoksa, direkt case içinde i'ye 9 değerini atarsanız da olur bence.
 
Son düzenleme:

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı