有时[]是可选的吗?

时间:2015-06-12 12:40:20

标签: c#

我有一个简单的代码:

 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数组的地址

2 个答案:

答案 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继承。