是否存在为泛型类指定可能类型的方法
本文关键字:类型 方法 存在 泛型类 是否 | 更新日期: 2023-09-27 18:27:13
我正在为XNA编写一些代码,以便拥有自己的绘图模块,可以用来缓存/绘制静态顶点/索引。
这是课堂,有问题的那一行给我带来麻烦的是第51行。
_vertexBuffer.SetData(_vertices.ToArray());
它有错误:The type 'T' must be a non-nullable value type in order to use it as parameter 'T'
它似乎不喜欢它,因为SetData通常需要一个与VertexBuffers构造函数中使用的VertexDeclaration
匹配的顶点数组,而我对列表/类的定义表明它可以是任何类型。
是否将<T>
指定为顶点?
它们被称为泛型类型约束。无论VertexBuffer
类型是什么,它都有这个方法:
void SetData<T>(...) where T : struct
这就是导致您错误的原因。
事实上,MSDN说这就是方法签名:
public void SetData<T> (
T[] data
) where T : ValueType
本质上是一样的。
因此,要解决此问题,您必须传入一个值类型的项数组,而不是引用类型。也就是说,DrawModule<T>
的实例化必须是DrawModule<ValueTypeHere>
。