例如,考慮一個工具類SerializableList
:創建通過拉姆達廠家直銷VS對象 「的新類型()」 語法
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表達式語法,我認爲這兩種方法之間沒有任何區別 –
我沒有看到將調用傳遞給列表的要點。 – tuespetre
@DoanCuong,我知道'lambda'這個詞會彈出,所以我已經更新了標題以支持它:) – Noseratio