c# - 如何在 IEnumerable 中验证收益返回默认值?
问题描述
我正在尝试检查是否IEnumerable<>
为空或为空,但不知何故,只要它为空,我的 if 检查总是失败。
private bool Update()
{
IEnumerable<RecordHolder> recordHolders = GetData();
// below check doesn't work
if (recordHolders == null || !recordHolders.Any())
return false;
// .. some other code
}
public IEnumerable<RecordHolder> GetData()
{
var isSuccess = PullRemote(url);
if (!isSuccess.Result) { yield return default; }
// .. some other code
}
每当我的GetData()
方法返回时yield return default
,随后的if
签入Update
方法就不起作用。我做错了什么吗?
我以为我的 if 签入Update
方法将能够捕获yield return default
但我错了。
解决方案
我认为您正在寻找yield break
而不是yield return default
. 或者,您可以在常规方法(不是迭代器块)中执行操作的第一部分,并在特殊情况下返回失败情况(Array.Empty<T>()
是常见的选择),推迟到迭代器块(或Select
投影)成功案例。
推荐阅读
- batch-file - 检查批处理文件中的空字符串
- optimization - 优化器返回错误时加载 pyomo 解决方案
- wpf - 如何将 GUI 信息发送回数据上下文
- java - 在java中获取日期字符串与当前日期之间的时间差
- java - MouseWheelListener 和 MouseMotionListener 不能一起工作
- sql-server - 用户登录失败(Microsoft SQL Server 错误:18456)
- qt - 如何在 QT 中使用 QSettings 保存自己的类的 QList?
- git - github - 通过多次提交更新未合并的拉取请求与上游主控
- jquery - 从 textarea 复制 CKEditor 中的内容
- java - 如何显示自定义列名 JTable 而不是来自数据库?