C# 不同类型的列表列表
我想将不同类型的列表添加到列表中。这是我的方法:C# 不同类型的列表列表,c#,.net,list,C#,.net,List,我想将不同类型的列表添加到列表中。这是我的方法: struct Column { public string title; public List<dynamic> col; } var signals = new List<Column>(); signals.Add(new Column {title = "stringCol", col = new List<string>() }); signals.Add(new Column {t
struct Column
{
public string title;
public List<dynamic> col;
}
var signals = new List<Column>();
signals.Add(new Column {title = "stringCol", col = new List<string>() });
signals.Add(new Column {title = "doubleCol", col = new List<double>() });
struct列
{
公共字符串标题;
公开名单;
}
var信号=新列表();
signals.Add(新列{title=“stringCol”,col=new List()});
signals.Add(新列{title=“doubleCol”,col=new List()});
它说,
List
不能转换为List
。我也尝试过使用模板,但我没有让它运行。使用对象
而不是动态
,您将拥有对象
的列表,您可以稍后将其转换为所需的类型
struct Column
{
public string title;
public List<object> col;
}
var signals = new List<Column>();
signals.Add(new Column {title = "stringCol", col = new List<object> {new List<string>() }});
signals.Add(new Column {title = "doubleCol", col = new List<object> {new List<double>() }});
struct列
{
公共字符串标题;
公开名单;
}
var信号=新列表();
signals.Add(新列{title=“stringCol”,col=new List{new List()});
signals.Add(新列{title=“doubleCol”,col=newlist{newlist()}});
为什么不是动态的?请看这里:
摘要:
如果您使用动态,您将选择动态键入,从而选择
大多数情况下都是编译时外检查
因此,这意味着
动态
类型将在运行时计算,并不意味着“任何类型”,而是意味着“运行时定义的某个类型”除非您将所有列表都设置为相同类型(例如动态
),否则无法执行此操作。本打算编辑您的答案,但您击败了我。改为+1:)在您的答案中添加我建议在结构中使用第三个属性来标识列表的类型。我的回答和你一样:)@Dom84这是一个选项,很好的建议:)我如何访问列表
?我尝试了signals[0].col.Add(“string”)
,但这会在列表中添加一个元素
@Henste是的,但此对象的底层类型是string