这是一个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
我想在声明和初始化之间分离的原因是初始化将在循环内。
答案 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)
另一个选项 - 初始化一个不同的源数组,然后每次在循环中将数据复制到真实数组上。