我有一个简单的代码:
class Program
{
static void Main(string[] args)
{
Object[] v1 = FuncBunja1();
Object v3 = FuncBunja1();
v1[0].ToString();
(v3 as Object[])[0].ToString();
}
private static Object[] FuncBunja1()
{
Object[] objs = new Object[4];
return objs;
}
}
编译器如何让v3获取指向数组的指针?是通过声明引用单个对象(据我所知)。
从内存方面我可以看到,v1和v3包含Objects数组的地址
答案 0 :(得分:1)
这是可能的,因为C#中的类型通常继承自Object
,特别是Object[]
。
MSDN个州(虽然不是100%准确):
在C#的统一类型系统中,所有类型,预定义和用户定义的引用类型和值类型都直接或间接地从Object继承。您可以将任何类型的值分配给object类型的变量。
如 @RonanThibaudau 所述,有一些例外,请参阅Not everything derives from object。尽管如此:
很多类型都来自于对象。所有值类型(包括枚举和可空类型)都派生自object。所有类,数组和委托类型都派生自object。
答案 1 :(得分:0)
.Net中的任何类型都继承自Object
,因此作为示例:
Object[]
相应地继承自Object
。int
继承自Object
。int[]
继承自Object
。但是为了澄清OP,类型int[]
不会从int
继承。