目 录CONTENT

文章目录

CSharp(十二) 分支语句

CSharp(十二) 分支语句

C# 中的 分支语句 (Selection Statements)用于根据条件判断执行不同的代码路径,主要包括 if 语句和 switch 语句。

if 语句

简单的if语句

int age = 20;

if (age >= 18)
{
    Console.WriteLine("已成年");
}

if-else 语句

int score = 75;

if (score >= 60)
{
    Console.WriteLine("及格");
}
else
{
    Console.WriteLine("不及格");
}

if-else,if-else多分枝

int score = 85;

if (score >= 90)
{
    Console.WriteLine("优秀");
}
else if (score >= 80)
{
    Console.WriteLine("良好");
}
else if (score >= 70)
{
    Console.WriteLine("中等");
}
else if (score >= 60)
{
    Console.WriteLine("及格");
}
else
{
    Console.WriteLine("不及格");
}

嵌套if语句

bool isVip = true;
int amount = 500;

if (isVip)
{
    if (amount > 300)
    {
        Console.WriteLine("VIP享受8折优惠");
    }
    else
    {
        Console.WriteLine("VIP享受9折优惠");
    }
}
else
{
    Console.WriteLine("普通用户无折扣");
}

三元运算符(简化版if-else)

int a = 10, b = 20;
int max = (a > b) ? a : b;  // max = 20

string result = (age >= 18) ? "成年" : "未成年";

switch 语句

基本语法

int day = 3;

switch (day)
{
    case 1:
        Console.WriteLine("星期一");
        break;
    case 2:
        Console.WriteLine("星期二");
        break;
    case 3:
        Console.WriteLine("星期三");
        break;
    case 4:
        Console.WriteLine("星期四");
        break;
    case 5:
        Console.WriteLine("星期五");
        break;
    default:
        Console.WriteLine("周末");
        break;
}

合并case(穿透)

char grade = 'B';

switch (grade)
{
    case 'A':
    case 'B':
    case 'C':
        Console.WriteLine("通过");
        break;
    case 'D':
        Console.WriteLine("不及格");
        break;
    default:
        Console.WriteLine("无效成绩");
        break;
}

使用switch表达式(C#8.0)

// 更简洁的写法
int day = 3;
string dayName = day switch
{
    1 => "星期一",
    2 => "星期二",
    3 => "星期三",
    4 => "星期四",
    5 => "星期五",
    _ => "周末"  // _ 相当于 default
};

模式匹配(C#7.0)

object obj = 123;

switch (obj)
{
    case int i when i > 100:
        Console.WriteLine($"大整数: {i}");
        break;
    case int i:
        Console.WriteLine($"整数: {i}");
        break;
    case string s:
        Console.WriteLine($"字符串: {s}");
        break;
    case null:
        Console.WriteLine("空值");
        break;
    default:
        Console.WriteLine("未知类型");
        break;
}

if vs switch 选择

场景 推荐语句 原因
区间判断(如 > , < ) if switch 不支持范围
固定值判断(如枚举、常量) switch 更清晰、效率更高
多条件组合 if 更灵活
类型判断 switch + 模式匹配 代码更简洁

完整示例

using System;

class Program
{
    static void Main()
    {
        Console.Write("请输入月份(1-12): ");
        int month = int.Parse(Console.ReadLine());

        // 判断季节
        string season;
        if (month >= 3 && month <= 5)
        {
            season = "春季";
        }
        else if (month >= 6 && month <= 8)
        {
            season = "夏季";
        }
        else if (month >= 9 && month <= 11)
        {
            season = "秋季";
        }
        else if (month == 12 || month == 1 || month == 2)
        {
            season = "冬季";
        }
        else
        {
            season = "无效月份";
        }

        Console.WriteLine($"季节: {season}");

        // 使用 switch 判断天数
        int days = month switch
        {
            1 or 3 or 5 or 7 or 8 or 10 or 12 => 31,
            4 or 6 or 9 or 11 => 30,
            2 => 28,
            _ => 0
        };

        Console.WriteLine($"天数: {days}");
    }
}

总结

  • if 适合条件判断和范围检查
  • switch 适合固定值判断和类型判断
  • C# 8.0+ 的 switch 表达式让代码更简洁
  • 模式匹配让 switch 可以处理类型判断
0
博主关闭了当前页面的评论