【发布时间】:2013-10-09 03:39:03
【问题描述】:
例如,考虑一个实用程序类SerializableList:
public class SerializableList : List<ISerializable>
{
public T Add<T>(T item) where T : ISerializable
{
base.Add(item);
return item;
}
public T Add<T>(Func<T> factory) where T : ISerializable
{
var item = factory();
base.Add(item);
return item;
}
}
通常我会这样使用它:
var serializableList = new SerializableList();
var item1 = serializableList.Add(new Class1());
var item2 = serializableList.Add(new Class2());
我也可以通过因式分解来使用它,如下所示:
var serializableList = new SerializableList();
var item1 = serializableList.Add(() => new Class1());
var item2 = serializableList.Add(() => new Class2());
第二种方法似乎是首选的使用模式,因为我最近注意到 SO。真的是这样(如果是,为什么)还是只是口味问题?
【问题讨论】:
-
第二种方法使用 lambda 表达式语法,我认为这两种方法之间没有任何区别
-
我没有看到将调用传递给列表的意义。
-
@DoanCuong,我知道
lambda这个词会弹出,所以我更新了标题以支持它:) -
"第二种方法似乎是首选的使用模式..." 在哪里?这似乎毫无意义且效率低下。在我遗漏的其他示例中可能有一个用例吗?
标签: c# lambda factory-pattern