簡體   English   中英

列出<>多個列表c#

[英]Lists<> with multiple lists c#

我正在尋找一個解決方案來創建List<>列表,其中包含不同的數據類型,如List<List<int>,List<double>,List<string>> list;

或具有多種數據類型的List<> ,如List<int,double,string> list;

嚴肅地說...... 為什么?

消耗這些結構的代碼將變得令人困惑並且難以支持。 它真的,真的會。

如果您的數據具有自定義結構,請創建一個自定義對象來表示該結構。 像這樣的東西:

class MyThing
{
    public int Widget { get; set; }
    public double Foo { get; set; }
    public string Something { get; set; }
}

為您的值/類型/等使用實際有意義的名稱。 當然,因為這是完成這一切的重點。

然后只列出一個:

var things = new List<MyThing>();

隨着您的結構不斷變化和增長,您將該結構的邏輯構建到對象本身中 ,而不是構建使用它的所有消費代碼中。 然后使用它的代碼更接近於它試圖執行的操作的語義,而不是令人眼花繚亂的語法操作。

您可以按列表制作列表

List<List<int>>

要擁有包含多種數據類型的列表,您可以使用最多可以包含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);

也許你可以這樣做

 public class Helper
    {
        public object value;
        private string Type;
    }

然后創建列表

List<Helper> myList=new List<Helper>();

像這樣用

myList.Add(new Helper {value = 45,Type = "int"});
myList.Add(new Helper {value = 45,Type = "int"});
myList.Add(new Helper {value = "hello",Type = "string"});

和根據類型的隱蔽。

如果我正確地理解你,我認為你需要一個小幫手類:

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屬性對它們的含義不是很具描述性。 : Item1Item2Item3 ......

解決此問題的最佳方法是使用Interface,您可以在此處找到多種數據類型的解決方案列表

您可以使用ArrayList - 舊的非通用列表。 這允許你把任何東西放進去,int,string,FooObject,bool,....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM