我很好奇,如果因爲我受夠了,我可以提高標準的通用List<>
功能編寫代碼,如:審查擴展列表<>功能
var list = new List<Person>{
new Person{Name = "David", Age = 24},
new Person{Name = "John", Age = 30}
};
list.Add(new Person{Name = "Terry", Age = 28});
我要選擇一個T
可以隱含構造。最好的我想出了讓我有多達四個對象的構造參數來做到這一點:
var list = new ListWithConstructor<string, int, Person>(
(name,age) => new Person { Name = name, Age = age })
{
{"David", 24},
{"John", 30}
};
list.Add("Terry", 28);
這是這樣實現的:
public class ListWithConstructor<T1, T> : List<T>
{
private readonly Func<T1, T> itemConstructor;
public ListWithConstructor(Func<T1, T> itemConstructor)
{
this.itemConstructor = itemConstructor;
}
public void Add(T1 arg1)
{
base.Add(itemConstructor(arg1));
}
}
public class ListWithConstructor<T1, T2, T> : List<T>
{
private readonly Func<T1, T2, T> itemConstructor;
public ListWithConstructor(Func<T1, T2, T> itemConstructor)
{
this.itemConstructor = itemConstructor;
}
public void Add(T1 arg1, T2 arg2)
{
base.Add(itemConstructor(arg1, arg2));
}
}
...等多達四個參數。
很明顯,其他List<>
構造函數(容量和IEnumerable
現有元素)也可以實現。
這怎麼能改進?
爲什麼你要寫很多這樣的代碼呢? – jason 2011-05-27 13:26:40
這個問題是基於好奇心 - 似乎相當無害,沒有意識到我會從過去是一個支持性社區得到如此荒謬的迴應。 – 2011-05-27 13:30:26
你說過「我厭倦了寫代碼,比如......」,這似乎不僅僅是一種好奇心。此外,將回應描述爲「荒謬」似乎並不積極參與所謂「支持性社羣」的成員。 – jason 2011-05-27 21:55:07