C#泛型 - 数组?

Iva*_*nov 4 c# generics

如何在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.您还可以使用带有指针的不安全代码来执行"盲目复制",但是您应该保存它,直到您使用安全方法遇到性能问题.