增加连接列表名称

时间:2013-09-25 14:45:17

标签: c# asp.net-mvc concatenation

比方说,我有一个分配给以下变量的数字(将改变每个运行时间):

var number = 3;

我想创建这么多列表,其名称末尾有一个数字,每次递增,如下所示:

list_0
list_1
list_2

我按照以下标准格式声明了一个列表:

List<double> list = new List<double>();

我假设您将使用循环,但我不确定如何动态正确分配名称。这就是我所拥有的:

for (var i = 0; i < number; i++)
{
    List<double> ("list_" + i) = new List<double>();
}

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

虽然您可能会使用Reflection API运气,但这不可能达到预期的目的。

这是一种反模式:你应该在编译时知道你的列表打算做什么,并给它们一个描述其目的的名称。如果不这样做,您可能不想为它们命名,只需将它们的引用保留在列表中,如下所示:

List<List<Double> myLists = new List<List<double>>();

var listX = new List<double>(new[]{5.0, 2.5, 3.2});
myLists.add(listX);

这将使您更轻松地使用它们。

答案 1 :(得分:0)

你要做的是一种不好的做法。如今你写的大部分代码已经很难阅读了,如果你试图将变量添加到变量名中(并且我很高兴编译器禁止这个),那将是真正的地狱。

相反,请考虑一个适合您需求的数据结构;你需要有多个变量,从0到X排序。听起来像是一个列表,所以你可以创建一个List列表。

所以,如果你有int number = 3;,你可以做到

List<List<double>> lists = new List<List<double>>(); 
for (int i = 0; i < number; i++)
{
    lists[i] = new List<double>();
}

如果您想在此之后访问其中一个列表,则可以轻松使用索引或LINQ .ElementAt()

List<double> listNumberTwo = lists[2];
List<double> listNumberTwo = lists.ElementAt(2);