2015-10-20 122 views
3

我想將不同類型的列表添加到列表中。這是我的方法:不同類型的列表列表

struct Column 
{ 
    public string title; 
    public List<dynamic> col; 
} 

var signals = new List<Column>(); 
signals.Add(new Column {title = "stringCol", col = new List<string>() }); 
signals.Add(new Column {title = "doubleCol", col = new List<double>() }); 

它說,List<string>不能轉換爲List<dynamic>。我也嘗試使用模板,但我沒有得到它運行。

+0

「在運行時定義的某種類型的」除非你讓所有的列出了你不能做到這一點相同的類型(例如'動態')。 – Jon

回答

6

使用object而不是dynamic,您將擁有object列表,您可以稍後轉換爲所需的類型。

struct Column 
{ 
    public string title; 
    public List<object> col; 
} 

var signals = new List<Column>(); 
signals.Add(new Column {title = "stringCol", col = new List<object> {new List<string>() }}); 
signals.Add(new Column {title = "doubleCol", col = new List<object> {new List<double>() }}); 

爲什麼不動態?在這裏閱讀:dynamic vs object type

摘要:

如果使用動態您加入到動態類型,從而選擇加入 出的編譯時檢查的大部分。

因此,這意味着dynamic類型將在運行時計算,這並不意味着「任何類型」這意味着

+1

即將編輯你的答案,但你擊敗了我。有一個+1而不是:) – Nasreddine

+2

添加到您的答案,我會建議結構中的第三個屬性來標識列表的類型。我是關於回答完全一樣的,就像你做的那樣:) – Dom84

+0

@ Dom84這是一個選項,很好的建議:) – wudzik