2015-10-03 122 views
1

我想在列表後面添加新項目並獲取新創建的項目。在列表中創建默認項目並返回新項目

讓我們假設,我們可以爲一個時刻做這樣的事情:

class Temp 
{ 
    public string First { get;set;} 
    public string Second { get;set;} 
} 
List<string> list = new List<string>(); 
var newItem = list.Push(); 
newItem.First="asd"; 
newItem.Second = "qwe; 

這將是更容易比

var newItem = new Temp(); 
newItem.First="asd"; 
newItem.Second = "qwe; 
list.Add(newItem); 

尤其是當我不能使用自動屬性。

這可能嗎?

+2

是沒有意義的,你是問。請更清楚。你可以通過使用列表的插入方法並給它索引來插入 –

回答

0

您可以使用對象初始化:

var list = new List<Temp>(); 
list.Add(new Temp{ First = "abc", Second = "def" }); 

或連同一個集合初始化:

var list = new List<Temp> { new Temp{ First = "abc", Second = "def" } }; 

這將打開你的四個襯墊成一行。

或者一個以上的條目:

var list = new List<Temp> { 
    new Temp{ First = "abc", Second = "def" }, 
    new Temp{ First = "ghi", Second = "jkl" }, 
    new Temp{ First = "mno", Second = "pqr" } 
}; 

它當然應該是一個Temp列表,而不是的string列表。

0

除非您實現自己的List類型並添加Push方法,否則唯一的方法是如果List中的T可以使用無參數構造函數構造。

這是一個擴展方法。

這不是建議的,但是是你的問題的答案。

沿東西這行 - 我沒有編譯或運行這段代碼

public static class ListEx { 
    public static T Push<T>(this List<T> list) where T: new() { 
    // Create an instance of T. 
    var instance = new T(); 
    // Add it to the list. 
    list.Add(instance); 
    // Return the new instance. 
    return instance; 
    } 
} 
+0

,或者你可以簡單地用'new T()'創建一個實例。請參閱:http://stackoverflow.com/a/11234485/880990 –

+0

噢,那麼你去:D – Jeff