c# – 如何证明返回IEnumerable的方法已被调用两次?
发布时间:2020-12-15 23:47:19 所属栏目:百科 来源:网络整理
导读:在Visual Studio中,ReSharper警告:“可能多次枚举IEnumerable”,代码如下: static void Main(string[] args){ IEnumerablestring items = Test2(); foreach (var item in items) { Console.WriteLine(item); } var newitems = new StringBuilder(); foreac
在Visual Studio中,ReSharper警告:“可能多次枚举IEnumerable”,代码如下:
static void Main(string[] args) { IEnumerable<string> items = Test2(); foreach (var item in items) { Console.WriteLine(item); } var newitems = new StringBuilder(); foreach (var item in items) { newitems.Append(item); } } private static IEnumerable<string> Test2() { string[] array1 = { "1","2","3" }; return array1; } 我希望Test2方法将被调用两次,但它被调用一次. 我错过了什么? 解决方法
它只被调用一次,因为Test2()实际上返回了string [],它也是一个IEnumerable< string>.
此字符串[]数组仍然由项引用,因此每次使用项时,只需重新使用该数组. 您期望的情况是使用iterator block实现Test2(): private static IEnumerable<string> Test2() { string[] array1 = { "1","3" }; foreach (var str in array1) { yield return str; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |