gpt4 book ai didi

c# - 为什么我的 C# 方法没有被调用?

转载 作者:太空狗 更新时间:2023-10-29 22:15:27 24 4
gpt4 key购买 nike

为什么我的 X 方法没有被调用?!

static class Program
{
private static void Main()
{
X((IEnumerable<int>)null);
}

public static IEnumerable<T> X<T>(IEnumerable<T> e)
{
if (e == null)
throw new ArgumentNullException();
yield break;
}
}

我尝试进入调试器,但它没有输入 X! yield break 关键字是否会导致一些我不知道的副作用?

如果值得的话,我正在使用带有 .NET 3.5 SP1 的 Visual Studio 2008 Express。

最佳答案

X2 是一个迭代器,被延迟执行。在您尝试从返回的 IEnumerable 实例中获取值之前,它不会真正运行。您可以通过将函数分成两部分来修复此问题以获得您实际想要的行为。

   public static IEnumerable<T> X2<T>(IEnumerable<T> e)
{
if (e == null)
throw new ArgumentNullException();
return X2Helper(e);
}

private static IEnumerable<T> X2Helper<T>(IEnumerable<T> e)
{
yield break;
}

Eric 有一篇关于此主题的精彩博文:http://blogs.msdn.com/ericlippert/archive/2008/09/08/high-maintenance.aspx

关于c# - 为什么我的 C# 方法没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com