我很好奇,如果因为我受够了,我可以提高标准的通用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