Why can't we debug a method with yield return for the following code?
本问题已经有最佳答案,请猛点这里访问。
以下是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Program { static List<int> MyList; static void Main(string[] args) { MyList = new List<int>() { 1,24,56,7}; var sn = FilterWithYield(); } static IEnumerable<int> FilterWithYield() { foreach (int i in MyList) { if (i > 3) yield return i; } } } |
我在
还有一个问题。我读到yield向调用者返回数据。如果是这样,如果更改了filterwithyield方法的返回类型以通过错误对其进行int,yield关键字是否总是需要
您可以调试该方法。问题是,您试图访问的代码永远不会被执行。
使用
1 | var sn = FilterWithYield(); |
准备枚举序列,但不开始枚举它。
另一方面,如果添加一个
1 2 3 | foreach (var n in FilterWithYield()) { Console.WriteLine(n); } |
或
1 | var sn = FilterWithYield().ToList(); |