我對使用所有的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