int expenseCode;
if (int.TryParse(sourceRecord.ExpenseCode, out expenseCode) && _ExpenseCodeLookup.ContainsKey(expenseCode))
{
     destRow.PROFIT_CENTER_NAME = _ExpenseCodeLookup[expenseCode];
}
else
     destRow.PROFIT_CENTER_NAME = "Unknown";

我担心的是,在执行第二个操作之前,是否总是会运行第一个表达式(在进程中设置expenseCode)?

最佳答案

没关系。 &&在C#中处于短路状态,并且在调用out之前,TryParse肯定已为ContainsKey参数分配了适当的值。

另一方面,您可以再次使用相同的技巧来获取值:

string profitCenter;
int expenseCode;
if (int.TryParse(sourceRecord.ExpenseCode, out expenseCode) &&
    _ExpenseCodeLookup.TryGetValue(expenseCode, out profitCenter))
{
    destRow.PROFIT_CENTER_NAME = profitCenter;
}
else
{
    destRow.PROFIT_CENTER_NAME = "Unknown";
}

这样,您只需要查找费用代码一次。

关于c# - if语句会导致不良情况发生吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3105189/

10-09 03:00