如何一次为数组分配多个常量,而不是在声明时?

时间:2017-06-17 16:23:11

标签: c#

这是一个C#新手问题。

考虑以下数组声明和初始化:

// This declare the array and initialize it with the default values
double[] MyArray = new double[3];

在我的代码中,我按如下方式初始化数组:

MyArray[0] = 1d;
MyArray[1] = 2d;
MyArray[2] = 3d;

我知道我可以在声明时立即将多个常量分配给数组,如下所示:

double[] MyArray = new double[3] {1d, 2d, 3d};

如何进行这样的初始化但不是在C#中声明时?

在VB.NET中,可以按照以下步骤完成:

Dim MyArray(3) As Double
...
MyArray = {1#, 2#, 3#}  ' Assign multiple values at once

更新

我想在声明和初始化之间分离的原因是初始化将在循环内。

4 个答案:

答案 0 :(得分:1)

  

我知道我可以在声明时立即将多个常量分配给数组,如下所示:

double[] MyArray = new double[3] {1d, 2d, 3d};

这段代码并没有真正分配所有的值......它实际上与此相同:

double[] MyArray = new double[3];
MyArray[0] = 1d;
MyArray[1] = 2d;
MyArray[2] = 3d;

没有特定的语法可以为现有数组分配多个值。

如果你需要在循环中完成,你可以这样做:

double[] MyArray = new double[3];
for (int i = 0; i < MyArray.Length; i++)
{
    MyArray[i] = i + 1;
}

答案 1 :(得分:0)

可能最简单的方法是使用像这样的for循环

int[] myArray = new int[5];

for (int i = 0; i < myArray.Length; i++)
{
    myArray[i] = i+5;
}

你也可以这样做

int[] myArray = Enumerable.Range(5, 5).ToArray();

但是这个article表示Enumerable.Range较慢。

修改

为了回应您的更新,我真的不确定为什么您不能将其作为初始化的一部分 - &#34;常数&#34;表明它没有改变,你知道它是什么 - 如果是这样的话,你在初始化数组时会阻止你分配它们吗?

喜欢这个

double[] myArray = new double[] { 1d, 2d, 3d };

或者像这样的命名常量

double[] myArray = new double[] { constA, constB, constC };

如果你真的想把它作为两个部分来做,你就可以这样做

double[] myArray;

myArray = new double[] { 1d, 2d, 3d };

myArray = new double[] { constA, constB, constC };

答案 2 :(得分:0)

声明:

double[] myArray;

初​​始化:

myArray = new double[] { 1d, 2d, 3d };

答案 3 :(得分:0)

另一个选项 - 初始化一个不同的源数组,然后每次在循环中将数据复制到真实数组上。