You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中不使用using编写代码?解决ToList编译报错问题

解决CS1061:‘IEnumerable’不包含‘ToList’定义的问题

嘿,这个坑我踩过!你遇到的问题核心在于扩展方法的调用规则——ToList()是System.Linq.Enumerable类里的扩展方法,当你去掉using System.Linq;之后,编译器没办法自动识别到这个扩展方法,哪怕你已经写了System.Linq.Enumerable.Range也没用。

扩展方法本质是静态方法,只有当你通过using导入了它所在的命名空间时,编译器才允许你用“实例方法”的点语法来调用它。如果没导入命名空间,你就必须以静态方法的形式直接调用,而不是像之前那样在IEnumerable对象后面加.ToList()。

给你两个可行的单语句解决方案:

方案1:直接调用静态方法形式的ToList

把.ToList()替换成System.Linq.Enumerable.ToList(...),完整代码如下:

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

方案2:用List的构造函数替代ToList

因为List<T>有一个接收IEnumerable<T>的构造方法,你可以直接创建List实例,这样也能绕开扩展方法的问题:

new System.Collections.Generic.List<int>(System.Linq.Enumerable.Range(0, 10)).ForEach(x => System.Diagnostics.Debug.WriteLine(x));

两种方式都能解决编译报错的问题,选哪个看你个人习惯啦~

内容的提问来源于stack exchange,提问作者Bret Pehrson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:09:13