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/