Alıştırma - Switch deyimi uygulama
- 11 dakika
switch ifadesi, dallanma yapısına alternatif sağlayan bir C# seçim deyimidir. Liste halinde bilinen eşleşen değerlerle karşılaştırıldığında, bir switch deyimi, tek bir değer değerlendirirken bir if-elseif-else yapısına kıyasla avantajlar sağlar.
Aşağıdaki senaryoyu göz önünde bulundurun:
- Gıda beslenmesi ile ilgili bir uygulama üzerinde çalışıyorsunuz. Kodun bir bölümü meyvelerle ilgilidir.
- Kodunuz, farklı meyve türlerinin adını tutmak için kullanılan adlı
fruitbir değişken içerir. - Uygulamanızın odaklanmış olduğu 20 meyvenin bir listesine sahipsiniz.
- Kodunuzu,
fruit'a atanan değere göre dallanmak istiyorsunuz.
Bu senaryoda, her meyve türü için ayrı bir dal oluşturmak için deyimini switch kullanabilirsiniz.
Switch deyimi nasıl çalışır?
deyimi, switch olası anahtar bölümleri listesinden yürütülecek kodun bir bölümünü seçer. Seçilen switch bölümü, desenin deyimin eşleşme ifadesiyle eşleşmesine göre seçilir.
Aşağıdaki kod örneği, switch ifadesinin temel yapısını göstermektedir, bunu göz önünde bulundurun.
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
Eşleşme ifadesi ( anahtar ifadesi olarak da adlandırılır) anahtar sözcüğünü switch izleyen değerdir( bu örnekte (fruit)). Her anahtarlama bölümü bir durum deseni tarafından tanımlanır. Durum desenleri, anahtar kelime case'den sonra bir değer kullanılarak oluşturulur. Bu örnekteki ilk durum deseni: case "apple":. Desen kalıpları, ya true ya da false olarak değerlendirilen Boole ifadeleridir. Her bir switch bölümü, durum deseni eşleşirse yürütülecek az sayıda kod satırı içerir. Bu örnekte, fruit değerine "apple" atanırsa, ilk durum deseni true olarak değerlendirilecek ve bu anahtar bölümü yürütülecektir.
Switch ifadesi en az bir switch bölümü içermelidir, ancak normalde üç veya daha fazla switch bölümü içerir.
Anahtar en iyi şu durumlarda kullanılır:
- Birçok olası değerle eşleştirmek istediğiniz tek bir değeriniz (değişken veya ifade) var.
- Belirli bir eşleşme için en fazla birkaç kod satırı yürütmeniz gerekir.
Uyarı
Bu switch deyiminin ilk örneği kasıtlı olarak basittir ve söz dizimini incelemeniz kısaydı. Daha gelişmiş bazı senaryolar üzerinde çalışırken, switch deyiminin ek özelliklerini aşağıdaki bölümlerde inceleyeceksiniz.
Artık kodlama ortamınızı hazırlamanın ve kendi switch deyimlerinizi geliştirmeye başlamanın zamanı geldi.
Kodlama ortamınızı hazırlama
Bu modül, tanıtım kodu oluşturma ve çalıştırma sürecinde size yol gösteren uygulamalı etkinlikleri içerir. Geliştirme ortamınız olarak Visual Studio Code kullanarak bu etkinlikleri tamamlamanızı öneririz. Bu etkinlikler için Visual Studio Code'un kullanılması, dünya çapındaki profesyoneller tarafından kullanılan bir geliştirici ortamında daha rahat kod yazmanıza ve çalıştırmanıza yardımcı olur.
Visual Studio Code'yu açın.
Visual Studio Code'u açmak için Windows Başlat menüsü (veya başka bir işletim sistemi için eşdeğer kaynak) kullanabilirsiniz.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda Windows Masaüstü klasörüne gidin.
Kod projelerini tuttuğunuz farklı bir klasör konumunuz varsa, bunun yerine bu klasör konumunu kullanabilirsiniz. Bu eğitim için önemli olan, kolayca bulunabilecek ve anımsanabilecek bir konuma sahip olmaktır.
Klasör Aç iletişim kutusunda Klasör Seç'i seçin.
Yazarlara güvenip güvenmeyişinizi soran bir güvenlik iletişim kutusu görürseniz Evet'i seçin.
Visual Studio Code Terminal menüsünde Yeni Terminal'i seçin.
Terminal panelindeki bir komut isteminin geçerli klasörün klasör yolunu görüntülediğine dikkat edin. Örneğin:
C:\Users\someuser\Desktop>Uyarı
Korumalı alan veya barındırılan bir ortam yerine kendi bilgisayarınızda çalışıyorsanız ve bu C# serisindeki diğer Microsoft Learn modüllerini tamamladıysanız, kod örnekleri için zaten bir proje klasörü oluşturmuş olabilirsiniz. Bu durumda, TestProject klasöründe bir konsol uygulaması oluşturmak için kullanılan sonraki adımı atlayabilirsiniz.
Terminal komut isteminde, belirtilen klasörde yeni bir konsol uygulaması oluşturmak için aşağıdaki istemi girin:
dotnet new console -o ./CsharpProjects/TestProjectBu .NET CLI komutu, belirtilen klasör konumunda yeni bir C# konsol uygulaması projesi oluşturmak için bir .NET program şablonu kullanır. Komut sizin için CsharpProjects ve TestProject klasörlerini oluşturur ve dosyanızın
.csprojadı olarak TestProject kullanır.Dosyaların zaten var olduğunu belirten bir ileti görüntülenirse, sonraki adımlarla devam edin. Mevcut proje dosyalarını yeniden kullanacaksınız.
EXPLORER görünümünde CsharpProjects klasörünü genişletin.
TestProject klasörünü ve iki dosyayı, Program.cs adlı bir C# program dosyasını ve TestProject.csproj adlı bir C# proje dosyasını görmeniz gerekir.
Visual Studio Code Dosyası menüsünde Klasör Aç'ı seçin.
Klasör Aç iletişim kutusunda CsharpProjects klasörünü ve ardından Klasör Seç'i seçin.
EXPLORER görünümünde TestProject klasörünü genişletin ve Program.cs'ı seçin.
Mevcut kod satırlarını silin.
Bu modül sırasında kod örnekleri oluşturmak, derlemek ve çalıştırmak için bu C# konsol projesini kullanacaksınız.
Terminal panelini kapatın.
Switch deyimi oluşturma ve test edin
Visual Studio Code'un açık olduğundan ve Düzenleyici panelinde Program.cs görüntülendiğinden emin olun.
Uyarı
Program.cs boş olmalıdır. Değilse, tüm kod satırlarını seçin ve silin.
Visual Studio Code Düzenleyicisi'ne aşağıdaki kodu yazın:
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");Visual Studio Code Dosyası menüsünde Kaydet'i seçin.
kodu oluşturmadan veya çalıştırmadan önce Program.cs dosyasının kaydedilmesi gerekir.
EXPLORER panelinde, TestProject klasör konumunuzdaki bir Terminali açmak için TestProjesi'ne sağ tıklayın ve Tümleşik Terminalde Aç'ı seçin.
Bir Terminal paneli açılır. Terminal, Terminal'in TestProject klasör konumunuza açık olduğunu gösteren bir komut istemi içermelidir.
Terminal komut isteminde kodunuzu çalıştırmak için dotnet run yazın ve Enter tuşuna basın.
Uyarı
"Çalıştırılacak proje bulunamadı" iletisini görürseniz Terminal komut isteminin beklenen TestProject klasörü konumunu gösterdiğinden emin olun. Örneğin:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Aşağıdaki çıkışı görmeniz gerekir:
John Smith, Senior AssociateGirdiğiniz
switchbeyânı gözden geçirmek için bir dakikanızı ayırın.deyiminin
switchtek bir kod bloğu tanımladığını fark edin.switchifadesi, anahtar bölümlerinin listesini içeren tek bir kod bloğu tanımlar. Anahtar sözcüğünswitchsağında, parantez içinde bir switch ifadesi var.Kod bloğundaki anahtar bölümler listesine dikkat edin.
Kod
switchbloğu, her biri bir veya daha fazla anahtar etiketi içeren switch bölümlerinin listesini içerir. Ayrıca, her switch bölümü etiket switch deyiminin en üstünde tanımlanan switch ifadesine eşitse yürütülecek bir deyim listesi içerir.Anahtar ifadesi, bir anahtar ifadeye eşit değer bulunana kadar yukarıdan aşağıya durum etiketlerine göre değerlendirilir. Etiketlerin hiçbiri eşleşmezse,
defaultdurumu için deyim listesi yürütülür. Varsayılan değer dahil değilse, denetim switch deyiminin bitiş noktasına aktarılır. Her etiket, switch ifadesinde belirtilen türle eşleşen bir değer türü sağlamalıdır.Uyarı
Opsiyonel
defaultetiket, anahtar geçiş bölümleri listesinde herhangi bir konumda görünebilir. Ancak geliştiricilerin çoğu, son seçenek olarak konumlandırmakdefaultdaha mantıklı (mantıksal olarak) olduğundan bunu en sona koymayı tercih eder. Konum ne olursa olsun,defaultbölüm en son değerlendirilir.Örneğimizde:
- switch ifadesi şudur:
(employeeLevel) - her switch bölümünün tek bir anahtar etiketi (
caseveyadefault) vardır. - eşleşen anahtar bölümü
case: 200tarafından tanımlanmıştır, çünküemployeeLevel = 200.
- switch ifadesi şudur:
Her bir switch bölümü, bir sonraki bölümden ayrı olduğuna dikkat edin.
Yalnızca bir anahtar bölümünün yürütülmesine izin verilir. Bu, bir anahtar bölümünün yürütülmesinin bir sonraki anahtar bölümüne "geçmesine" izin verilmediği anlamına gelir. Anahtar
breaksözcüğü, bir switch bölümünü sonraki bölüme geçmeden önce sonlandırmanın çeşitli yollarından biridir.breakanahtar sözcüğünü (veya isteğe bağlı olarakreturnanahtar sözcüğünü) unutursanız derleyici hata oluşturur.
Switch deyiminin bunu nasıl değerlendirdiğini görmek için düzey değişkeni değerini değiştirin
Varsayılan durumu uygulamak için, değer atamasını değiştirerek çalışanın düzeyini değiştirelim.
öğesine atanan değeri değiştirmek için
employeeLevelkodunuzu aşağıdaki gibi güncelleştirin:int employeeLevel = 201;Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın.
Kodunuzu çalıştırmak için Terminal komut isteminden girin
dotnet run.Çıktının değiştiğini fark ettiniz mi?
Şimdi kodu çalıştırdığınızda, kullanılan daha genel başlığı görmeniz gerekir.
John Smith, AssociateemployeeLevelhiçbir etiketle eşleşmediğinden etiketdefaulteşleştirilir.
Anahtar bölümünü birden çok etiket içerecek şekilde değiştirme
Şirketimizin tüm düzey 100 çalışanına 200. düzey çalışanla aynı unvanı veren "Kıdemli İş Ortağı" unvanını vermeye karar verdiklerini varsayalım. Geliştirici olarak, case 100: etiketine ait ilk anahtar bölümünü kaldırmaya ve bunun yerine case 100: ve case 200: etiketlerinin aynı anahtar bölümünü yürütmesine izin vererek bunu uygulamaya karar verirsiniz.
öğesine atanan değeri değiştirmek için
employeeLevelkodunuzu aşağıdaki gibi güncelleştirin:int employeeLevel = 100;İlk anahtar bölümüne birden çok etiket atamak için kodunuzu aşağıdaki gibi güncelleştirin:
case 100: case 200: title = "Senior Associate"; break;Değişiklik yapmayı bitirdiğinizde, değişiklikleriniz aşağıdaki kodla eşleşmelidir:
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");Kod dosyanızı kaydedin ve ardından Visual Studio Code'u kullanarak kodunuzu çalıştırın.
Kodunuzu çalıştırmak için Terminal komut isteminden girin
dotnet run.Aşağıdaki çıkışı görmeniz gerekir:
John Smith, Senior AssociateHer iki durum etiketi
100ve200de artık başlığı dize değerineSenior Associateayarlayan switch bölümüyle eşleştirilmiştir.
Özet
Switch deyimi hakkında öğrendiğiniz ana çıkarımlar şunlardır:
-
switchHer biri kod mantığınızda bir dal gerektiren birçok olası eşleşmeye sahip tek bir değeriniz olduğunda deyimini kullanın. - Kod mantığı içeren tek bir anahtar bölüm, anahtar sözcük
caseile tanımlanan bir veya daha fazla etiket kullanılarak eşleştirilebilir. - Başka hiçbir durum etiketi eşleşmediğinde kullanılacak bir etiket ve geçiş bölümü oluşturmak için isteğe bağlı
defaultanahtar kelimesini kullanın.