C#不能隐式转换类型' T'对象[*,*]'

时间:2014-12-12 21:17:54

标签: c# generics type-conversion implicit-conversion

我有一个方法,我正在尝试更新以接受多种类型的数据,所以我使用了泛型。我使用了几种不同的类型,但传入的一种类型是object[,]。当我尝试将数据设置为该类型时,我在转换时收到以下错误:

Cannot implicitly convert type 'T' to 'object[*,*]'

代码非常简单:

object[,] data = (T)(object[,])element;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您看到的问题是,由于T既不来自object[,]也未实现explicit conversion,因此代码根本不知道如何执行转换。这是因为在引擎盖下,转换了box或unbox派生类型,或调用转换方法以返回所需的输出类型。

由于您使用的是Generic,因此可以使用where语句约束类型。只要受约束的类型(或更多派生类型)定义并显式转换为(或派生自)object[,],您就可以执行转换。