我对使用所有的IEnumerable<T>
扩展方法有点困惑,intellisense总是要求<T>
,但我认为有必要一直指定<T>
。什么时候必须为IEnumerable扩展方法指定类型<T>?
比方说,我有以下几点:
List<Person> people = GetSomePeople();
这是怎么回事:
从这个List<string> names = people.ConvertAll<string>(p=>p.Name).Distinct<string>().ToList<string>();
不同:
List<string> names = people.ConvertAll<string>(p=>p.Name).Distinct().ToList();
我觉得上面的两行代码是sxactly同样的,现在的问题:
如何知道何时指定<T>
以及何时跳过?
它实际上被称为“类型推断”而不是“隐式泛型”。它推断泛型类型*参数*,而不是类型参数。只是要挑剔:) – 2009-11-04 06:24:46
谢谢你的提升。 :)编辑。顺便说一句,如果我非常准确,那么我将拥有111k的声望。但是,唉......我也有时会睡觉,只能用我的双手打字。 :P – Yogesh 2009-11-04 06:28:40