我正在尋找一個解決方案來創建具有不同數據類型的列表List<>
像 List<List<int>,List<double>,List<string>> list;
列表<>與多個列表C#
或多種類型的數據一個List<>
像 List<int,double,string> list;
我正在尋找一個解決方案來創建具有不同數據類型的列表List<>
像 List<List<int>,List<double>,List<string>> list;
列表<>與多個列表C#
或多種類型的數據一個List<>
像 List<int,double,string> list;
可能是你可以根據類型做這樣
public class Helper
{
public object value;
private string Type;
}
然後創建列表這樣
myList.Add(new Helper {value = 45,Type = "int"});
myList.Add(new Helper {value = 45,Type = "int"});
myList.Add(new Helper {value = "hello",Type = "string"});
和隱蔽
List<Helper> myList=new List<Helper>();
使用。
,您可以撥打通過
List<List<int>>
列出的名單要與多種數據類型的列表,你可以使用一個Tuple這可能需要多達8個項目秒。
List<Tuple<string, int>>
List<Tuple<string, string, int>>
你甚至可以去瘋狂做以下
Tuple<List<int>, int, int> tuple = new Tuple<List<int>, int, int>(new List<int>(), 2, 3);
謝謝@Swen –
如果我正確認識你,我想你需要一點輔助類:
public class MyInfo {
public int MyInt32 { get; set; }
public double MyDouble { get; set; }
public string MyString { get; set; }
}
然後,使那些列表:var myList = new List<MyInfo>()
。
你也可以使用一個List<Tuple<int, double, string>>
,但我會建議創建自己的類,如果使用的範圍比單級更寬,因爲Tuples
性能不是很描述爲它們是什麼:Item1
,Item2
,Item3
...
千真萬確... 爲什麼?
消耗這些結構的代碼將會令人困惑並且難以支持。它真的,真的會。
如果您的數據具有自定義結構,請創建一個自定義對象來表示該結構。事情是這樣的:
class MyThing
{
public int Widget { get; set; }
public double Foo { get; set; }
public string Something { get; set; }
}
使用您的值/類型/等實際有意義的名字。當然,因爲這就是完成這一點的全部要點。
然後,只需有這些列表:
var things = new List<MyThing>();
當你的結構的不斷變化和成長,你建立一個結構的邏輯放到對象本身,而不是把所有的消費代碼它使用它。然後使用它的代碼更接近它所要執行的操作的語義,而不是令人眼花繚亂的語法操作。要解決這個
謝謝@David –
最好的辦法是使用界面,你可以在這裏找到list of multiple data types
雖然這是好的建議(最好是重複的建議/評論,而不是回答順便說一句),但它對OP沒有幫助,因爲'int'之間沒有共享接口,'double'和'string'。 –
解決方案可以使用ArrayList - 舊的非泛型列表。這允許你放入任何東西,int,string,FooObject,bool,....
創建列表 –
Seb
你究竟在做什麼**試圖做什麼? – cubrr
假設你可以做'List list;'list [0]'的編譯時類型是什麼?你需要一個通用的基礎類型=在這種情況下,'對象'。 –