我正在寻找一个解决方案来创建具有不同数据类型的列表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]'的编译时类型是什么?你需要一个通用的基础类型=在这种情况下,'对象'。 –