【发布时间】:2011-07-11 21:22:39
【问题描述】:
我正在尝试将一些代码从 C++ 转换为 C#,但我不确定这两个语句是否等效。
C++(源代码):
float* df = new float[ length ] // length is a previously initialized int
int coefIND = 0;
do
{
float* const df2 = df + coefIND;
// some element reassignments such as df2[1] = x[...] * y[...];
coefIND += 4;
}
while(coefINF < length);
delete[] df; // this occurs much later though
C#(翻译?):
float[] df = new float[ length ]
int coefIND = 0;
do
{
Array.Copy(df, 0, df, coefIND, length);
// some element reassignments such as df[1] = x[...] * y[...];
coefIND += 4;
}
while(coefIND < length)
感谢您的帮助, 格雷格
【问题讨论】:
-
有一些当前的
index而不是df2[1]写df[index+1]有什么问题? -
你还没有在 C# 代码 sn-p 中声明
df2。此外,您似乎正在从df2复制到它自己。此外,没有复制第一个示例。这些怎么可能是一样的? -
另外,C++ sn-p 包含内存泄漏。
-
对。 C++ 代码不是复制数组,只是使用指针来索引数组。
df2 = df[coefIND]; coefIND += 4;。而df2[1]变成了df[coefIND+1]。 -
我建议使用集合类,例如 List,而不是数组。