goto在这段代码中使用是否正确?还有其他选择吗?
return ExecuteReader(cmd, reader =>
{
List<BEPartnership> partnerhip = null;
//Partnership
if (!((SqlDataReader) reader).HasRows)
goto exit;
partnerhip =
new List<BEPartnership>{new BEPartnership().GetFromReader(reader)};
//Customers
if (!reader.NextResult() && !((SqlDataReader) reader).HasRows)
goto exit;
foreach (BEPartnership p in partnerhip)
p.Partner = new BECustomer().GetFromReader(reader);
//Contracts
if (!reader.NextResult() && !((SqlDataReader) reader).HasRows)
goto exit;
List<BEContractB2B> contracts = new List<BEContractB2B>();
contracts.Add(new BEContractB2B().GetFromReader(reader));
// contracts = new BEContractB2B().GetFromReader2(reader).ToList();
exit:
return partnerhip;
});
Run Code Online (Sandbox Code Playgroud)
我会说不.
我从2001年开始用C#编程,从未使用过goto!
如果您想在代码中出现"短路"退出,为什么不替换
goto exit:
Run Code Online (Sandbox Code Playgroud)
同
return partnership
Run Code Online (Sandbox Code Playgroud)
goto在我看来,"最佳实践"是相互排斥的(也可能/希望大多数其他人也是如此).对a的需求goto表明错误的代码设计.在您的情况下,解决方案似乎很简单:我认为您只需要替换goto exit为return partnerhip和删除标签exit:.(它应该是"伙伴关系"而不是"伙伴关系"吗?)
| 归档时间: |
|
| 查看次数: |
4451 次 |
| 最近记录: |