0

例如,我有一个分配给以下变量的数字(每次运行时间都会改变):

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>();
}

任何帮助,将不胜感激

4

2 回答 2

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);

这将使您更容易与他们合作。

于 2013-09-25T14:49:24.270 回答
0

你试图做的是一个不好的做法。现在编写的大多数代码已经很难阅读,如果您尝试将变量添加到变量名称中(我很高兴编译器禁止这样做),那将是真正的地狱。

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

所以如果你有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);
于 2013-09-25T14:53:40.043 回答