繁体   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