我有一段类似于以下的代码:
double dTest1, dTest2;
int iTest1, iTest2;
dTest1 = 15.0;
dTest2 = 20.0;
array<int^,2>^ arr2Test = gcnew array<int^,2>(dTest1, dTest2);
iTest1 = arr2Test->GetLength(0);
iTest2 = arr2Test->GetLength(1);
二维数组的长度是可变的,长度信息存储在 2 个双变量中。事实证明它不起作用:
iTest1 = 1077149696
iTest2 = 0
这里出了什么问题? 编译器或解释器不能使用双变量作为数组长度吗?
实际上,当我有一个一维数组时它可以工作:
array<int^>^ arrTest = gcnew array<int^>(dTest1);
iTest1 = arrTest->GetLength(0);
--> iTest1 = 15
上述问题的解决方案是显式转换为 int,无论如何都应该这样做,但也可以忘记(如果你不关心编译器警告):
array<int^,2>^ arr2Test = gcnew array<int^,2>((int)dTest1, (int)dTest2);