我不能做我想做的事。我只想要非国际代表的帐户。但是当我调用ActiveAccounts()时,我没有变为空,我得到一个可枚举的,然后包含null。我在这里做错了什么?请帮助。为什么这种扩展方法不起作用?
public static class AccountExt
{
public static IEnumerable<Account> ActiveAccounts(this AccountRep rep)
{
if(rep == null)
throw new ArgumentNullException();
if(rep.IsInternational)
yield return null;
foreach(var acc in rep.FetchAccounts())
{
if(acc.IsActive)
yield return acc;
}
}
}
没错。我讨厌它,当返回任何类型的枚举的函数返回null。它的代码混乱。 – 2010-02-12 00:26:55
即使有'yield break',OP也可能希望将该方法拆分为两个,以便前提条件可以立即进行计算,而不必在枚举器迭代时进行计算。这可能会导致意外的异常远离实际的故障点。 – LBushkin 2010-02-12 00:29:22
我需要ActiveAccounts()来返回null。空的可扩展性不是我需要的,所以会产生突破性工作? – msophie 2010-02-12 00:31:59