小编Amm*_*hdi的帖子

IEnumerator 或 IEnumerable 中的“产量”?

我一直在寻找这一点,但我还没有得到任何有关它的信息!

我看了很多关于“收益回报”的视频和红色文章,我想我对此有了更好的理解,但有一点我无法理解

我应该使用yield return 的正确接口是什么?(当然Yield返回会在Loop中使用但在哪个接口中)。

我的意思是这一点有所不同,我看到有些人在 中创建了一个“迭代器”IEnumerator,例如:

static string[] Names = { "Name1", "Name2", "Name3" };

    static IEnumerator Test()
    {
        for (int i = 0; i < Names.Length; i++)
        {
            yield return Names[i];
        }
    }
Run Code Online (Sandbox Code Playgroud)

和其他一些人使用IEnumerable:

        static IEnumerable Test()
    {
        for (int i = 0; i < Names.Length; i++)
        {
            yield return Names[i];
        }
    }
Run Code Online (Sandbox Code Playgroud)

我假设最好在IEnumerable接口中使用“Yield return”创建一个“迭代器”,因为一般来说 IEnumerable 负责访问该类(更准确地说,它返回一个类(对象)的实例)迭代的逻辑。在这种情况下,编译器到底发生了什么(yield 关键字的糖)。

 private static IEnumerable Test() => new <Test>d__1(-2);
//decompiled code of Test() method above …
Run Code Online (Sandbox Code Playgroud)

c# iterator yield-return

7
推荐指数
1
解决办法
3029
查看次数

使用自定义格式的撇号''作为日期

在Microsoft C#的文档中说

要更改特定日期和时间字符串的时间分隔符,请在文字字符串分隔符中指定分隔符.例如,自定义格式字符串hh'_'dd'_'ss生成一个结果字符串,其中"_"(下划线)始终用作时间分隔符.

在我的代码中,我尝试使用分隔符为Date,有两种方式有和没有Apostrophe如图所示,但结果对于两个输出都是相同的!

随着撇号

var __Date = new DateTime(1998, 07, 8, 07, 5, 1).ToString("yyyy'-'MM'-'dd hh':'mm':'ss");
Run Code Online (Sandbox Code Playgroud)

输出为:1998-07-08 07:05:01

没有撇号

var _Date = new DateTime(1998,07,8,07,5,1).ToString("yyyy-MM-dd hh:mm:ss");
Run Code Online (Sandbox Code Playgroud)

输出为:1998-07-08 07:05:01

有人可以告诉我在文档中日期分隔符中Apostrophe的目的是什么?

c# datetime

5
推荐指数
1
解决办法
307
查看次数

标签 统计

c# ×2

datetime ×1

iterator ×1

yield-return ×1