If vs. Switch Comparison
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 10 / 66.
C#, birden fazla koşulu işlemek için iki ana yol sunar: if-else ifadeleri ve switch ifadeleri. Her birinin farklı senaryolarda güçlü yönleri vardır.
If-else ifadeleri esnektir ve herhangi bir tür koşulu ele alabilir:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}Switch ifadeleri, tek bir değişkeni birden fazla sabit değere karşı karşılaştırırken daha temizdir:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Switch, case etiketlerini üst üste yığarak aynı sonuca sahip birden fazla case'i gruplayabilir — buna fall-through denir. Birkaç case arasında kod olmadığında, hepsi aynı bloğu çalıştırır:
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'R':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}Burada, 'S' ve 'U' ikisi de aynı Console.WriteLine("Weekend") çağrısına fall through yapar. Boş case etiketlerini bu şekilde üst üste yığmak, C#'ta case'leri gruplamanın standart yoludur.
Görev
OrtaconvertGradeToPoints adında bir metot oluşturun ki:
- Bir harf notunu string parametre olarak alır
- Hem switch hem de if-else yaklaşımlarını kullanarak bunu sayısal not puanına dönüştürür
- Metot her iki yaklaşımı da uygulamalı ve switch uygulamasının sonucunu döndürmelidir
- Bu not dönüştürmelerini kullanın:
- "A" veya "a" = 4
- "B" veya "b" = 3
- "C" veya "c" = 2
- "D" veya "d" = 1
- "F" veya "f" = 0
- Herhangi başka bir giriş = -1
Kopya kağıdı
C#, birden fazla koşulu işlemek için iki temel yol sağlar: if-else ifadeleri ve switch ifadeleri.
If-else ifadeleri esnektir ve herhangi bir tür koşulu işleyebilir:
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}Switch ifadeleri, tek bir değişkeni birden fazla sabit değerle karşılaştırırken daha temizdir:
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Switch ifadeleri, case etiketlerini yığarak aynı sonucu paylaşmak üzere birden fazla case'i gruplandırabilir (fall-through):
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}Kendin dene
public class ConvertGradeToPoints
{
// convertGradeToPoints metodunu uygulayın
public static int convertGradeToPoints(string letterGrade)
{
// Buraya kodunuzu yazın
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety