我希望能够将函数声明为
void foo(<any value type>[] data){}
在 C# 2.0 中。如果我将其声明为
void foo(ValueType[] data){}
它可以编译,但是 data[] 中的元素被视为派生自object
,例如,我不能说类似
fixed (void* pData = data){}
我想避免将 void* 作为参数——我只想能够接受任何值类型的数组,然后对其执行非托管操作。
ETA:另外,这也有同样的问题:
public static unsafe void foo<T>(T[] data) where T:struct{
fixed(void *p = data){}
}
万一你想知道。修复失败,因为它被视为托管类型 - CS0208,无法声明指向托管类型的指针。见下文“毫米”。我认为他是对的......这可能只是无法完成。