相关疑难解决方法(0)

何时不使用收益率(返回)

这个问题在这里已经有了答案:
在返回IEnumerable时是否有理由不使用'yield return'?

关于这些的好处,这里有几个有用的问题yield return.例如,

我正在寻找关于何时使用的想法yield return.例如,如果我预计需要返回一个集合中的所有项目,它没有看起来就像yield是有用的,对不对?

什么情况下使用yield会限制,不必要,让我陷入困境,或者应该避免?

.net c# yield yield-return

158
推荐指数
8
解决办法
4万
查看次数

收益率很高?

我发现自己经常讨论IEnumerables,以便我可以返回每个结果.有没有办法压缩这样的东西

foreach (var subSelector in subSelectors)
{
    foreach (var node in FindSingle(context, subSelector))
        yield return node;
} 
Run Code Online (Sandbox Code Playgroud)

去除内在的foreach?

c#

53
推荐指数
4
解决办法
2万
查看次数

为什么编译器不抱怨并非所有路径都返回?

我有一个内部do..while:

yield return string.Join(",", arr) + "\n";

为什么编译器不抱怨并非所有代码路径都返回值?

完整的代码示例如下:

    public static IEnumerable<string> Convert(Stream stream)
    {
        System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

        IExcelDataReader reader = ExcelReaderFactory.CreateBinaryReader(stream);
        var csvContent = string.Empty;
        do
        {
            while (reader.Read())
            {
                var arr = new List<string>();
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    var cell = reader[i]?.ToString();
                    var format = reader.GetNumberFormatString(i);
                    if (format == "mm\\/dd\\/yyyy" || format == "M/d/yyyy")
                    {
                        cell = cell.Replace(" 12:00:00 AM", "");
                    }
                    if (format == "h\\:mm\\:ss AM/PM")
                    {
                        cell = cell.Replace("12/31/1899 ", …
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio visual-studio-2017

2
推荐指数
1
解决办法
95
查看次数