首页 新闻 会员 周边

IEnumerable的一个怪异问题

0
悬赏园豆:5 [已解决问题] 解决于 2014-01-06 23:16

我在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是在同一个项目!

有谁知道原因吗?

seewold的主页 seewold | 初学一级 | 园豆:109
提问于:2014-01-06 01:22
< >
分享
最佳答案
0

IEnumerable<object>.Count<object>()是扩展方法,要引用 System.Linq命名空间。

收获园豆:3
德年 | 小虾三级 |园豆:810 | 2014-01-06 09:25

谢谢,你的答复让我知其所以然。

seewold | 园豆:109 (初学一级) | 2014-01-06 23:19
其他回答(2)
0

先在C里写.Count()然后编译看会不会报错,如果不报错,重启VS。如果报错,贴错误。

Ninja_Lu | 园豆:289 (菜鸟二级) | 2014-01-06 07:55
0

引用 System.Linq命名空间之后就可以了。

收获园豆:2
aehyok | 园豆:1212 (小虾三级) | 2014-01-06 10:00

楼主说了:程序集、命名空间什么的确定没有错

所以他不可能没有引用 System.Linq 命名空间。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-01-06 10:16

@Launcher: 那大神可知是啥问题吗?

支持(0) 反对(0) aehyok | 园豆:1212 (小虾三级) | 2014-01-06 10:17

@aehyok: 我也不知道,他得把他的项目贡献出来,我们才知道。也就是说有可能他确实是没引用 System.Linq 造成的,但是他意识不到这点,非要跟我们说他的命名空间没有引用错。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-01-06 10:24

谢谢,还贴了代码,有心了。

支持(0) 反对(0) seewold | 园豆:109 (初学一级) | 2014-01-06 23:20

@seewold: 是命令空间没引用吗

支持(0) 反对(0) aehyok | 园豆:1212 (小虾三级) | 2014-01-06 23:21

确实曾经做了一次using清理,没留意到把Ling给删了,汗……

支持(0) 反对(0) seewold | 园豆:109 (初学一级) | 2014-01-06 23:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册