C# 使用对象

C# 使用对象,c#,object,C#,Object,考虑变量ob4,如图所示 现在:如何到达ob4[0]->[0,2] var o=ob4[0]; double[,] p=(double[,]) o[0,0]; 行(double[,]p=(double[,])o[0,0];)给出了以下错误: 无法将带[]的索引应用于“object”类型的表达式。您需要先将o[0,0]强制转换为对象[],]: var o = (object[,]) ob4[0]; double[,] p = (double[,]) o[0, 0]; 如果您可以避免在编译时使用

考虑变量ob4,如图所示

现在:如何到达ob4[0]->[0,2]

var o=ob4[0];
double[,] p=(double[,]) o[0,0];
行(double[,]p=(double[,])o[0,0];)给出了以下错误:

无法将带[]的索引应用于“object”类型的表达式。

您需要先将
o[0,0]
强制转换为
对象[],]

var o = (object[,]) ob4[0];
double[,] p = (double[,]) o[0, 0];

如果您可以避免在编译时使用所有这些类型信息很少的嵌套多维数组,那就更好了-您没有给我们提供太多的上下文,但是如果您可以更改对象模型,这将非常有帮助。

,从错误消息中可以明显看出,运行时认为
o
object
,而不是
object[,]
。因此,您可能希望将代码更改为:

double[,] = (double[,])((object[,])o)[0,0];

现在运行库知道应该将
o
视为
object[,]

试试ob4[0,2],因为ob4是一个多维数组。你应该使用比未知对象数组更好的类型…@FizzBuzz:不是-它属于
object[]
类型。请看屏幕截图。@JonSkeet我想知道为什么var不执行此强制转换(对象[,])?!如果他只是删除var和object[,]o=ob4[0];这能行不行?@BassamAlugili:你为什么期望它能行呢?
ob4
的编译时类型是
object[]
,因此
ob4[0]
的编译时类型是
object
,而不是
object[,]
。您建议的代码无法编译。