具有多个列表的列表<> c#
Lists<> with multiple lists c#
我正在寻找一种解决方案来创建 List<>
具有不同数据类型的列表,例如
List<List<int>,List<double>,List<string>> list;
或具有多种数据类型的 List<>
,例如
List<int,double,string> list;
您可以通过
制作列表列表
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);
如果我没理解错的话,我觉得你需要一个小帮手class:
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>>
,但如果使用范围比单个 class 更广,我建议您创建自己的 class,因为 Tuples
属性不是很清楚地描述它们是什么:Item1
、Item2
、Item3
...
说真的... 为什么?
使用这些结构的代码将变得混乱且难以支持。真的,真的会。
如果您的数据具有自定义结构,请创建一个自定义对象来表示该结构。像这样:
class MyThing
{
public int Widget { get; set; }
public double Foo { get; set; }
public string Something { get; set; }
}
为您的 values/types/etc 使用 实际 有意义的名称。当然,因为这就是这样做的全部意义。
然后列出这些:
var things = new List<MyThing>();
随着您的结构不断变化和增长,您将该结构的逻辑构建到对象本身中,而不是构建到使用它的所有使用代码中。使用它的代码更接近于它试图执行的操作的语义,而不是令人眼花缭乱的句法操作。
解决此问题的最佳方法是使用界面,您可以在此处找到解决方案 list of multiple data types
您可以使用 ArrayList - 旧的非通用列表。这允许你在里面放任何东西,int,string,FooObject,bool,....
也许你可以这样做
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"});
和根据 Type.
的隐蔽
我正在寻找一种解决方案来创建 List<>
具有不同数据类型的列表,例如
List<List<int>,List<double>,List<string>> list;
或具有多种数据类型的 List<>
,例如
List<int,double,string> list;
您可以通过
制作列表列表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);
如果我没理解错的话,我觉得你需要一个小帮手class:
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>>
,但如果使用范围比单个 class 更广,我建议您创建自己的 class,因为 Tuples
属性不是很清楚地描述它们是什么:Item1
、Item2
、Item3
...
说真的... 为什么?
使用这些结构的代码将变得混乱且难以支持。真的,真的会。
如果您的数据具有自定义结构,请创建一个自定义对象来表示该结构。像这样:
class MyThing
{
public int Widget { get; set; }
public double Foo { get; set; }
public string Something { get; set; }
}
为您的 values/types/etc 使用 实际 有意义的名称。当然,因为这就是这样做的全部意义。
然后列出这些:
var things = new List<MyThing>();
随着您的结构不断变化和增长,您将该结构的逻辑构建到对象本身中,而不是构建到使用它的所有使用代码中。使用它的代码更接近于它试图执行的操作的语义,而不是令人眼花缭乱的句法操作。
解决此问题的最佳方法是使用界面,您可以在此处找到解决方案 list of multiple data types
您可以使用 ArrayList - 旧的非通用列表。这允许你在里面放任何东西,int,string,FooObject,bool,....
也许你可以这样做
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"});
和根据 Type.
的隐蔽