今天早上看到博客园上一篇喷java的泛型鸡肋的文章,感觉所言甚是,真的很鸡肋,当时心中对C#可谓又增加一步好感。但好景总是不长,下午优化代码的时候,就遇到了C#了让我感觉不够优雅的地方。
linq可谓C#中的神来之笔,其优点简直罄竹难书。所以,你没有理由不拥抱这个龙之睛,当然我也拥抱了,拥抱之余却发现,linq是不是C#半路想出来的东西的,直到2.0的时候估计他的架构者们都没想过这个查询结构设计。
ForEach配合Action,Select配合Func,各种神器,几乎所向披靡,你发现代码简化到就差要去删注释了。但你却不得不发现一个问题,ForEach不是linq的扩展方法,神啊,他竟然是硬编码的,不是针对某个接口,而是具体某个类型,如List里面有一个方法叫ForEach,啥子状况,那我不ToList还用不了这个特性了?
然后,看代码,数组里面也有ForEach,更郁闷,这个和List的还不一样。
然后你发现各种Collection结尾的数据类型,其不是泛型的,当然,你也就发现其失去一大堆方法。
这个算C#不优雅的地方么?DataTable的Rows最后只能DataTableAsEnumerable().AsQueryable(),那DatGridView的Row呢。。。。难道我要转变成IQueryable,然后手动设置Expression???