午夜视频在线观看区二区-午夜视频在线观看视频-午夜视频在线观看视频在线观看-午夜视频在线观看完整高清在线-午夜视频在线观看网站-午夜视频在线观看亚洲天堂

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

9 個消除或簡化減少 C# 條件語句的方法總結

admin
2025年2月23日 13:58 本文熱度 259

前言

嗨,大家好!

在你的編程生活中,一定少不了跟條件語句打交道,但是條件語句用得多了,你會發現程序變得越來越復雜,測試時經常會漏掉一些分支,而且大量的 if-else 語句閱讀起來理解非常困難,維護起來也特別困難!

所以減少或簡化條件語句不僅能提高代碼的可讀性,還能降低維護成本和減少潛在的錯誤。

我總結了 9 個消除或簡化減少 C# 條件語句的小技巧,希望它們能為你的編程旅程增添一份靈感,讓你的代碼更加簡潔優雅,從此告別那些令人頭疼的條件語句迷宮!

1. 使用多態

通過多態,將條件邏輯分散到不同的類中,從而減少 if 或 switch 語句。

優點:避免了 if 或 switch 語句,代碼更易擴展。

// 定義一個抽象基類
abstract class Animal
{
    public abstract void MakeSound();
}

// 派生類實現具體行為
class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Woof!");
    }
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Meow!");
    }
}

// 使用多態代替條件語句
Animal myAnimal = new Dog();
myAnimal.MakeSound(); // 輸出: Woof!

myAnimal = new Cat();
myAnimal.MakeSound(); // 輸出: Meow!

2. 字典映射

將條件邏輯映射到字典中,用鍵值對代替 switch 或 if-else。

優點:代碼更簡潔,易于擴展新的操作。

public string GetDayOfWeek(int dayNumber)
{
    var days = new Dictionary<intstring>
    {
        { 1"星期一" },
        { 2"星期二" },
        { 3"星期三" },
        { 4"星期四" },
        { 5"星期五" },
        { 6"星期六" },
        { 7"星期日" }
    };

    return days.TryGetValue(dayNumber, out var day) ? day : "無效的天數";
}

3. ?? 和 ?. 運算符

這兩個運算符可以簡化空值檢查和默認值賦值。

優點:減少 if 語句,代碼更簡潔。

string name = null;

// 使用空合并運算符(??)提供默認值
string displayName = name ?? "Guest";
Console.WriteLine(displayName); // 輸出: Guest

// 使用空條件運算符(?.)避免空引用異常
int? length = name?.Length;
Console.WriteLine(length ?? 0); // 輸出: 0

4. 三元運算符(?:)

可以簡化簡單的 if-else 語句。

優點:單行簡單條件判斷,避免多行代碼。

int age = 20;

// 使用三元運算符代替 if-else
string status = age >= 18 ? "Adult" : "Minor";
Console.WriteLine(status); // 輸出: Adult

5. 策略模式

將不同的行為封裝到獨立的策略類中,避免條件語句。

優點:避免條件語句,易于擴展新的策略。

// 策略接口
public interface IDiscountStrategy
{
    double CalculateDiscount(double amount);
}

// 幾個策略實現
public class NoDiscount : IDiscountStrategy
{
    public double CalculateDiscount(double amount) => 0;
}

public class FivePercentDiscount : IDiscountStrategy
{
    public double CalculateDiscount(double amount) => amount * 0.05;
}

public class TenPercentDiscount : IDiscountStrategy
{
    public double CalculateDiscount(double amount) => amount * 0.10;
}

// 上下文
public class DiscountContext
{
    private IDiscountStrategy _strategy;

    public DiscountContext(IDiscountStrategy strategy)
    {
        _strategy = strategy;
    }

    public double GetDiscount(double amount)
    {
        return _strategy.CalculateDiscount(amount);
    }
}

// 使用示例
var context = new DiscountContext(new TenPercentDiscount());
var discount = context.GetDiscount(150); // 15

6. LINQ

用 LINQ 代替 foreach 和 if 的組合,簡化集合過濾和操作。

優點:代碼更簡潔,可讀性更高。

var numbers = new List<int> { 123456 };

// 使用 LINQ 過濾偶數
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();

Console.WriteLine(string.Join(", ", evenNumbers)); // 輸出: 2, 4, 6

7. 模式匹配

使用 C# 8.0 增強后的 switch 表達式簡化多條件判斷。

優點:支持類型和條件模式匹配,代碼更直觀。

// (擴展應用)
string message = input switch {
    int n when n < 0 => "負數",
    int n when n == 0 => "零",
    int n when n > 0 => "正數",
    _ => "未知"
};
Console.WriteLine(message);

8. 委托 / Lambda 表達式

將條件邏輯封裝到委托或 Lambda 表達式中,減少重復代碼。

優點:邏輯復用,代碼更靈活。

// 定義一個委托
Func<intbool> isEven = x => x % 2 == 0;

// 使用委托代替條件語句
Console.WriteLine(isEven(4) ? "Even" : "Odd"); // 輸出: Even
Console.WriteLine(isEven(3) ? "Even" : "Odd"); // 輸出: Odd

9. 提前返回

通過盡早返回結果來減少嵌套的條件判斷。

優點:邏輯分層清晰,減少深層嵌套。

public void ProcessOrder(Order order)
{
    if (order == nullreturn;
    if (order.Items.Count <= 0return;

    // 處理訂單邏輯
}

總結

以上就是我總結的 9 個消除或簡化減少條件語句的方法。

根據具體的場景和需求選擇合適的方法,可以單獨使用,也可以組合使用,不妨在你的代碼中試試!


該文章在 2025/2/24 9:35:02 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产后式a一视频 | 国产成人精品视频一区二区三区 | 国产综合无码三级 | 国产人妻无码一区二 | 精品国产一区二区三区精品日韩 | 国产成人精品久久综合 | 国产精品美女久久久久久麻 | 国产欧美日韩午夜在线观看 | 99久久国产综合精品五月天 | 国产高清成人久久 | 韩国高清一区二区午夜无码 | 成人无码中文字幕在线不卡 | av无码精品专区在线观看 | 国产精品无圣光一区二区 | 高潮歹无毛免费观看 | 国产日韩欧美东南亚在线 | 国产偷自视 | 国产成人无码a区在 | 国产州精品99 | 国产高清av在线播放无弹窗 | av天堂午夜精品一区二区三区 | 国产三级在线观看播放视频 | 国产在线观看一级 | 国产专区无码午夜 | 91在线电影| 国产午夜无码喷水福利在线观看 | 国产精品无码免费专区午夜党 | 国产+人+综合+亚洲 国产+人人+视频 | 国产色精品久久人妻无码看片软件 | 91久久:助你畅享无忧体验 | 精品欧洲av无码一区二区男男 | 国产91精品 | 国产精品成人久久久久久久 | 精品久久无码中文 | 国产一区欧美一区二区 | 丰满人妻一区二区三区性色 | 国产精品嫩草影院一二三区 | 国产成人黄色网站 | 国产精品无码一本二本三本色 | 国产色欲av一区二区三区 | 91精品国产高清91久久久久 |