【问题标题】:For Each confirmation对于每个确认
【发布时间】:2018-11-07 06:06:46
【问题描述】:

我相信,我知道答案。但是,试图得到确认。如果,你做这样的事情:

foreach (string str in Directory.GetFileSystemEntries(path)) { Console.WriteLine(str); }

取而代之的是:

string[] directoryEntries = Directory.GetFileSystemEntries(path);
foreach (string str in directoryEntries) { Console.WriteLine(str); }

Directory.GetFileSystemEntries(path),在幕后,只会执行一次,对吗?我假设它在这种情况下产生了必要的 string[] 然后它是循环的。也有...

【问题讨论】:

  • 是的,没错。

标签: c# foreach


【解决方案1】:

是的,它只会执行一次。你是对的。如何检查?这是一个 sn-p,你可以写下来看看。

public static void Main()
{
    var ints = new int[]{0,2,5,8};
    foreach (var i in Print(ints))
    {
        Console.WriteLine(i);
    }
}

public static int[] Print(int[] numbers)
{
    Console.WriteLine("Hello");
    return numbers;
}

输出是:

Hello
0
2
5
8

Try this demo online

Hello 只打印一次!

更好的方法是使用debbuger 并逐步按照流程进行操作。更先进的方法是阅读MSIL :)

【讨论】:

  • 不错且有帮助的答案
  • 嗯,这是一个测试它的聪明方法。谢谢。
猜你喜欢
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多