我在Class A中定义了一个泛型IEnumerable的属性Items,在类A内,可以调用IEnumerable的各种成员,比如Items.Count(),如下图:
public class A { public IEnumerable<X> Items { get; set; } private void Do() { int i = Items.Count(); } }
在另外一个类C内,创建了A类的实例a,Items属性却不能调用IEnumerable的成员,比如这样写:
a.Items.
后面就没有Count()和IEnumerable的其他成员,不知道为什么,程序集、命名空间什么的确定没有错。更为怪异的是,在有的的类(比如类D)里又是可以的!类D和类C是在同一个项目!
有谁知道原因吗?
IEnumerable<object>.Count<object>()是扩展方法,要引用 System.Linq命名空间。
谢谢,你的答复让我知其所以然。
先在C里写.Count()然后编译看会不会报错,如果不报错,重启VS。如果报错,贴错误。
引用 System.Linq命名空间之后就可以了。
楼主说了:程序集、命名空间什么的确定没有错
所以他不可能没有引用 System.Linq 命名空间。
@Launcher: 那大神可知是啥问题吗?
@aehyok: 我也不知道,他得把他的项目贡献出来,我们才知道。也就是说有可能他确实是没引用 System.Linq 造成的,但是他意识不到这点,非要跟我们说他的命名空间没有引用错。
谢谢,还贴了代码,有心了。
@seewold: 是命令空间没引用吗
确实曾经做了一次using清理,没留意到把Ling给删了,汗……