我试图将vb6代码转换为c#代码。 我的vb6源代码包含各种类型的数组,经过Vs2005工具转换后,这些数组已成为基于0的数组,但我需要重新转换为非基于0的数组。例如,我尝试使用Array.CreateInstance显式转换为T []以供通用:
public void ResizeArrayBaseN<T>(ref T[] original, int firstLower, int firstCount)
{
try
{
int[] myBoundsArray = new int[1] {firstLower };
int[] myLengthsArray = new int[1] {firstCount - firstLower + 1 };
original = (T[])Array.CreateInstance(typeof(T), myLengthsArray, myBoundsArray);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
但是我从T [*]到T []错误中捕获了强制转换。 有谁可以帮助我吗 ? 提前致谢
答案 0 :(得分:5)
T[]
是一个 vector 数组 - 一个从零开始的一维数组。您不能使用T[]
来表示具有非零基数的数组,因为:它不是矢量。这就是*
中T[*]
的含义。我怀疑它只能 被引用为Array
- 这使得它非常不方便使用。