更紧凑的“收益率回报”方法?

超级JMN

我有这种方法产生由2种方法产生的值:

private IEnumerable<Node> ParseEmptyElement()
{
    foreach (var node in ParseMembersOfObject()) 
    {
        yield return node;
    }

    foreach (var node in ParseNestedProperty()) 
    {
        yield return node;
    }
}

对我来说似乎很冗长

有没有更好的方式表达“从MethodX产生所有值”,然后对MethodY进行同样的处理?

例子:

private IEnumerable<Node> ParseEmptyElement()
{
    #yield all# items from ParseMembersOfObject();    
    #yield all# items from ParseNestedProperty();
}

我不想被迫将foreach循环写入一行!但我也不想编写带有花括号和所有东西的成熟的foreach循环:)

圆胡子

正如Marc所说,这是等效的:

private IEnumerable<Node> ParseEmptyElement()
{
    return ParseMembersOfObject().Concat(ParseNestedProperty());
}

Concat 是使用延期执行来实现的,因此不会尽早评估您的枚举。

顺便提及,Concat实施foreach在一行循环:

static IEnumerable<TSource> ConcatIterator<TSource>(IEnumerable<TSource> first, 
                                                    IEnumerable<TSource> second) {
    foreach (TSource element in first) yield return element;
    foreach (TSource element in second) yield return element;
}

如果您不喜欢Concat,但仍然想要花括号,则仍可以保留它们,并只是更简洁地格式化代码:

private IEnumerable<Node> ParseEmptyElement()
{
    foreach (var node in ParseMembersOfObject()) { yield return node; }
    foreach (var node in ParseNestedProperty())  { yield return node; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IEnumerator收益率返回类型错误

来自分类Dev

收益率无效,但收益率有效

来自分类Dev

RSpec:如何测试收益率自我

来自分类Dev

使用收益率而不返回类型

来自分类Dev

PHP收益率,奇怪的行为

来自分类Dev

Clojure是否具有等于C#的收益率?

来自分类Dev

在此示例中,为什么“收益率”和“收益率收益率”具有相同的行为?

来自分类Dev

C#中的收益率回报-对字段的公开性进行失败测试

来自分类Dev

收益率-内存优化

来自分类Dev

Ruby Blocks(收益率)

来自分类Dev

收益率回报与LINQ Select之间的结果不同

来自分类Dev

收益率可重入吗?

来自分类Dev

收益率IEnumerable <IEnumerable <... >>

来自分类Dev

修改收益率的返回值

来自分类Dev

OpenCV 3.1 ANN预测收益率

来自分类Dev

ES6收益率(收益率1)(收益率2)(收益率3)()

来自分类Dev

Scala的未来内部收益率

来自分类Dev

AssertionError:的收益率未与Future一起使用

来自分类Dev

不从构造函数调用收益率返回的方法?

来自分类Dev

瓦拉收益率未恢复

来自分类Dev

IEnumerator收益率返回类型错误

来自分类Dev

收益率怪异行为

来自分类Dev

使用收益率而不返回类型

来自分类Dev

执行收益率返回后的代码

来自分类Dev

将列表与收益率连接

来自分类Dev

在此示例中,为什么“收益率”和“收益率收益率”具有相同的行为?

来自分类Dev

R中的收益率曲线排序

来自分类Dev

延迟评估收益率值

来自分类Dev

熊猫年化收益率