相关疑难解决方法(0)

我怎样才能返回一个空的IEnumerable?

鉴于以下代码和此问题中给出的建议,我决定修改这个原始方法,并询问IEnumarable中是否有任何值返回它,如果没有返回没有值的IEnumerable.

这是方法:

public IEnumerable<Friend> FindFriends()
        {
            //Many thanks to Rex-M for his help with this one.
            //https://stackoverflow.com/users/67/rex-m

            return doc.Descendants("user").Select(user => new Friend
            {
                ID = user.Element("id").Value,
                Name = user.Element("name").Value,
                URL = user.Element("url").Value,
                Photo = user.Element("photo").Value
            });
        }
Run Code Online (Sandbox Code Playgroud)

由于一切都在return语句中,我不知道如何做到这一点.会这样的吗?

public IEnumerable<Friend> FindFriends()
        {
            //Many thanks to Rex-M for his help with this one.
            //https://stackoverflow.com/users/67/rex-m
            if (userExists)
            {
                return doc.Descendants("user").Select(user => new Friend
                {
                    ID = user.Element("id").Value,
                    Name = user.Element("name").Value,
                    URL = user.Element("url").Value,
                    Photo = user.Element("photo").Value
                });
            }
            else
            { …
Run Code Online (Sandbox Code Playgroud)

c# ienumerable

310
推荐指数
4
解决办法
13万
查看次数

yield break是否等同于从返回IEnumerable <T>的方法返回Enumerable <T> .Empty

这两种方法似乎对我来说都是一样的

public IEnumerable<string> GetNothing()
{
    return Enumerable.Empty<string>();
}

public IEnumerable<string> GetLessThanNothing()
{
    yield break;
}
Run Code Online (Sandbox Code Playgroud)

我在测试场景中分析了每一个,我没有看到速度上有意义的差异,但yield break版本稍微快一些.

是否有任何理由使用一个而不是另一个?一个比另一个更容易阅读吗?是否存在对呼叫者有影响的行为差异?

c#

39
推荐指数
4
解决办法
1万
查看次数

什么是收益率突破的用途?

可能重复:
C#中的"yield break;"是什么?

任何人都可以看到使用"break"或"return"无法实现的"yield break"语句.

这句话似乎完全没用.更重要的是,如果没有这个陈述,"收益率返回X"语句可以简化为"收益率X",这更具可读性.

我错过了什么?

c# iterator yield

32
推荐指数
3
解决办法
2万
查看次数

屈服声明实施

我希望以一种易于理解的形式了解该声明的所有内容yield.

我已经阅读了关于yield实现迭代器模式时的语句及其简易性.但是,大部分都非常干燥.我想深入研究微软如何处理收益率.

另外,你什么时候使用收益率突破?

.net c# iterator yield

7
推荐指数
4
解决办法
3584
查看次数

标签 统计

c# ×4

iterator ×2

yield ×2

.net ×1

ienumerable ×1