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
相关产品推荐
相关产品推荐

