2010-12-21 46 views
0

據我所知。列表添加方法如下。列表<T>在C#中添加方法#

List<string> cities = new List<string>(); 
cities.Add("New York"); 
cities.Add("Mumbai"); 
cities.Add("Berlin"); 
cities.Add("Istanbul"); 

如果我設計的數據結構,因爲這

List<object> lstObj = new List<object>();    
if (true) // string members 
{ 
    cities.Add("New York"); 
    cities.Add("Istanbul"); 
} 
else // List obj members here 
{ 
    List<object> AListObject= new List<object>(); 
    cities.Add(AListObject); // how to handle this? 
} 

不對列表Add方法有效與否,如果我在同一個函數中添加不同類型的成員。

+4

請您詳細說明您要做什麼? – 2010-12-21 08:46:13

+0

我想將Xml文件轉換爲列表數據結構。有一些子項(subListObj)必須被添加到主列表obj(mainListObj)中。謝謝。 – 2010-12-21 08:47:40

+0

已經有類將XML文件轉換爲樹結構。爲什麼不使用其中之一? – 2010-12-21 08:52:40

回答

1

您不能將List<object>添加到List<string>。您可以添加到字符串列表的唯一東西是字符串(或空引用)。你可以用這個代替:

List<object> cities = new List<object>(); 

但是,這似乎是一個糟糕的設計。當您使用object作爲集合的通用類型時,實際上會失去類型安全的所有好處。

對於解析XML,我建議你看看XmlDocument

+0

您能否給我一個樹結構資源/教程鏈接,特別關注於Xml轉換爲樹數據結構謝謝。 – 2010-12-21 08:53:16

+0

有點可惜,我只能用.Net 2.0,不能使用Linq。 – 2010-12-21 08:58:03

+1

@Nano HE:對不起,我沒有看到c#-2.0標籤。改用XmlDocument。 – 2010-12-21 09:04:11

0

您應該使用List.AddRange方法將多個項目添加到列表中。

cities.AddRange(AListObject); 

但是,你必須嘗試添加objectstring名單的問題。

+1

我不認爲他就是這麼問。 – fearofawhackplanet 2010-12-21 08:48:31

+0

我的主列表obj由多個子對象嵌套(包括幾個子對象列表)。多項可能是'字符串','int','列表'等。 – 2010-12-21 08:50:03

1

由於您創建了一個類型爲object的列表,因此您可以添加任何內容,因爲每個類型都可以裝入對象中。

1

您可以添加任何內容到List<object>,所以如果您將cities更改爲List<object>那麼您的代碼將起作用。

var list = new List<object>(); 

list.Add("hello"); 
list.Add(1); 
list.Add(new List<bool>()); 

Console.WriteLine(list.Count()); 

話雖如此,但它幾乎肯定是一種不好的方式來編碼你正在嘗試做的任何事情。

1
List<object> AListObject = new List<object>(); 
foreach (object o in AListObject) 
{ 
    string s = o as string; 
    if (s != null) 
    { 
     cities.Add(s); 
    } 
} 

如果你可以使用LINQ從.NET 3.5比你可以做下一個:

List<object> AListObject = new List<object>(); 
cities.AddRange(AListObject.OfType<string>()); 
1

有使用泛型列表與對象的類型參數沒有意義,還不如用一個系統。 Collections.ArrayList。

相關問題