You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何不使用if语句实现表达式结果的赋值与返回?

无if语句实现布尔判断逻辑

POC代码优化

你的POC核心逻辑是判断两个条件的组合结果,完全可以直接返回布尔表达式的结果,不需要临时变量和if分支:

public bool ValueMethod()
{
    var expectedValue = new List<string>() { "Value1", "Value2", "Value3" };
    var valueTestTrue = "Value1";
    var valueTestFalse = "Value4";
    
    return expectedValue.Contains(valueTestTrue) && !expectedValue.Contains(valueTestFalse);
}

这段代码和原逻辑完全等价,布尔表达式的计算结果直接作为返回值,代码更简洁且可读性更强。

实际项目Load方法优化

针对你的实际项目代码,同样可以通过整合条件判断、利用空安全运算符来消除if语句,同时修正原代码中的拼写错误(SheetSata应为SheetData):

简洁版实现

public bool Load(SpreadsheetDocument spreadsheetDocument)
{
    WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
    WorksheetPart worksheetPart = ExcelHelper.GetWorksheetFromSheetName(workbookPart, "Computer");
    
    // 逐层判断非空,最终返回组合条件结果
    return worksheetPart != null 
        && worksheetPart.Worksheet.GetFirstChild<SheetData>() != null
        && computerList.Contains(ExcelHelper.GetCellValue(workbookPart, worksheetPart.Worksheet.GetFirstChild<SheetData>(), "A2"));
}

可读性更强的版本

如果担心重复调用GetFirstChild<SheetData>影响性能,可以用临时变量存储,但依然不需要if语句:

public bool Load(SpreadsheetDocument spreadsheetDocument)
{
    WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
    WorksheetPart worksheetPart = ExcelHelper.GetWorksheetFromSheetName(workbookPart, "Computer");
    SheetData sheetData = worksheetPart?.Worksheet?.GetFirstChild<SheetData>();
    
    return sheetData != null 
        && computerList.Contains(ExcelHelper.GetCellValue(workbookPart, sheetData, "A2"));
}

这里用?.空条件运算符避免空引用异常,确保在worksheetPart或Worksheet为null时,sheetData直接取null,最后通过sheetData != null过滤无效场景。

内容的提问来源于stack exchange,提问作者Quack_boi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:30:46