C#不能隐式转换类型';T';至';对象[*,*]和#x27;
我有一个方法,我正在尝试更新以接受多种类型的数据,所以我使用了泛型。我使用了两种不同的类型,但是传入的一种类型是C#不能隐式转换类型';T';至';对象[*,*]和#x27;,c#,generics,type-conversion,implicit-conversion,C#,Generics,Type Conversion,Implicit Conversion,我有一个方法,我正在尝试更新以接受多种类型的数据,所以我使用了泛型。我使用了两种不同的类型,但是传入的一种类型是object[,]。当我尝试将数据设置为该类型时,在转换时出现以下错误: 无法将类型“T”隐式转换为“object[*,*]” 代码非常简单,包括: object[,]数据=(T)(object[,])元素 有什么想法吗?您看到的问题是,由于T既不是从对象[,]派生的,也不是实现的,因此代码实际上不知道如何执行转换。这是因为在后台,转换可以是box或unbox派生类型,也可以调用con
object[,]
。当我尝试将数据设置为该类型时,在转换时出现以下错误:
无法将类型“T”隐式转换为“object[*,*]”
代码非常简单,包括:
object[,]数据=(T)(object[,])元素代码>
有什么想法吗?您看到的问题是,由于T
既不是从对象[,]
派生的,也不是实现的,因此代码实际上不知道如何执行转换。这是因为在后台,转换可以是box或unbox派生类型,也可以调用conversion方法以返回所需的输出类型
由于使用的是泛型,因此可以使用语句约束类型。只要约束类型(或更派生的类型)定义并显式转换为(或派生自)object[,]
,您就能够执行转换。这不是一个好的做法,但这将使它编译object[,]数据=(object[,])(object)元素
如果使用泛型,为什么在泛型方法中硬编码类型?我觉得有一个更大的问题。什么是T
?如果遵循通常的命名约定,则它可能是泛型类/结构或泛型方法的类型参数。但是没有从T
到任何数组类型的转换。而元素的类型是什么<代码>T
?请提供足够的代码,以便我们重现您的问题:例如什么是元素
,T
,等等。您需要更好地解释代码的意图。你能给我们看更多的代码,或者是一个有用的例子吗。