如何在不使用C#的情况下编写语句

时间:2018-05-04 18:27:43

标签: c# linq extension-methods

我有(调试)需要*来编写以下单个语句:

using System.Diagnostics;
using System.Linq;
// ...
Enumerable.Range(0, 10).ToList().ForEach(x => Debug.WriteLine(x));

但没有使用uses,例如:

System.Linq.Enumerable.Range(0, 10).ToList().ForEach(x => System.Diagnostics.Debug.WriteLine(x));

但由于ToList上下文未知,因此无法编译: 错误CS1061:'IEnumerable'不包含'ToList'的定义,并且没有扩展方法'ToList'接受类型'IEnumerable'的第一个参数可以找到(你是否缺少using指令或程序集引用?)

我的问题是:如何为ToList()指定命名空间上下文?

*这是一个人为的例子。实际上,我需要一种在运行时,在调试器即时窗口中迭代数据/函数的方法,在某些情况下,执行可能不在System.Linq的上下文中。

使用Visual Studio 2015

2 个答案:

答案 0 :(得分:4)

<a>

答案 1 :(得分:3)

您可以将扩展方法称为静态方法:

System.Linq.Enumerable.ToList(System.Linq.Enumerable.Range(0, 10))
                      .ForEach(x => System.Diagnostics.Debug.WriteLine(x));

但是,您无法从调试器中的Debug.WriteLine调用ForEach,但调试器仍会显示结果:

System.Linq.Enumerable.ToList(System.Linq.Enumerable.Range(0, 10))