如何在C#中重做C++模板函数的声明?
template <class type>
void ReadArray(type * array, unsigned short count)
{
int s = sizeof(type) * count;
if(index + s > size)
throw(std::exception("Error 102"));
memcpy(array, stream + index, s);
index += s;
}
Run Code Online (Sandbox Code Playgroud)
调用时,它通过读取特定位置(索引)处的流(流)在给定数组中追加bytes/word /(type).
我试着像这样重做声明,但是我收到了一个错误
public static T void ReadArray(<T> Array inputarray) // error
{
...
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
另一个保守的问题 - 如何将字节附加到该数组(memcpy()),我应该使用指针吗?
Guf*_*ffa 15
你这样使用它:
public static void ReadArray<T>(T[] inputArray) {
...
}
Run Code Online (Sandbox Code Playgroud)
您可以使用该Array.Copy方法在数组之间复制数据.
编辑:
如果您想在不同数据类型之间进行数据的"盲目复制",例如字节数组到长数组,那么您不能使用安全代码执行此操作.BitConverter例如,您可以使用该类将数组中的八个字节转换为long.您还可以使用带有指针的不安全代码来执行"盲目复制",但是您应该保存它,直到您使用安全方法遇到性能问题.