מדריך C# – משפט switch
בחלק זה נלמד כיצד להשתמש במשפט switch.
משפט switch
משפט switch מאפשר לנו לבחון משתנה ולבצע קטעי קוד שונים לפי ערכים שונים שהוא יכול לקבל.
לדוגמא, בתוכנית הבאה נרצה לקבוע את מחיר הקפה לפי הגודל המבוקש:
Console.Write("Enter cup size (big / medium / small): ");
string cupSize = Console.ReadLine();
int price = 0;
switch (cupSize)
{
case "big":
price = 15;
break;
case "medium":
price = 13;
break;
case "small":
price = 9;
break;
default:
Console.WriteLine("Invalid cup size!");
break;
}
if (price != 0)
{
Console.WriteLine("The coffee price is " + price);
}
הסבר התוכנית: ראשית אנו מבקשים מהמשתמש את גודל כוס הקפה המבוקש.
המשתנה cupSize מכיל את הגודל המבוקש, בהתאם לכך אנו מבצעים משפט switch שבוחן את הערך של cupSize ומבצע קוד המתאים לערך הקיים בו.
אם הערך הוא "big" התוכנית מציבה למשתנה price את הערך 15 ויוצאת ממשפט ה switch.
אם הערך הוא "medium" התוכנית מציבה למשתנה price את הערך 13 ויוצאת ממשפט ה switch.
אם הערך הוא "small" התוכנית מציבה למשתנה price את הערך 9 ויוצאת ממשפט ה switch.
בכל מקרה אחר, התוכנית מדפיסה הודעת שגיאה "Invalid cup size!".
לבסוף אנו מדפיסים את מחיר הקפה.
נשים לב לשימוש בפקודה break, חייבים לשים אותה בסוף כל מקרה (case) במשפט הswitch.
if או switch?
נעיר כי כל משפט switch יכול להיות מוחלף בסדרה של משפטי if מקוננים (ראה חלק קודם במדריך), אך לא להיפך.
מומלץ להשתמש במשפט switch אם ניתן, מאחר והקוד של התוכנית יוצא יותר ברור.
לדוגמא, אותה תוכנית אשר הייתה משתמשת במשפטי if מקוננים הייתה נראית כך:
Console.Write("Enter cup size (big / medium / small): ");
string cupSize = Console.ReadLine();
int price = 0;
if (cupSize == "big")
{
price = 15;
}
else if (cupSize == "medium")
{
price = 13;
}
else if (cupSize == "small")
{
price = 9;
}
else
{
Console.WriteLine("Invalid cup size!");
}
if (price != 0)
{
Console.WriteLine("The coffee price is " + price);
}
איחוד מקרים
לפעמים נרצה לאחד כמה מקרים שונים כך שיבצעו את אותו קוד, במקרה כזה נוכל לשים כמה משפטי case רצופים (ללא שימוש בbreak ביניהם).
לדוגמא, בקטע הקוד הבא נבקש מהמשתמש להכניס מספר בין 1 ל 10 ונדפיס האם הוא זוגי הוא אי-זוגי:
Console.Write("Enter number (1-10): ");
string numberString = Console.ReadLine();
int number = Convert.ToInt32(numberString);
switch (number)
{
case 1:
case 3:
case 5:
case 7:
case 9:
Console.WriteLine("number is odd");
break;
case 2:
case 4:
case 6:
case 8:
Console.WriteLine("number is event");
break;
default:
Console.WriteLine("number is not in range");
break;
}
תגובות בפייסבוק