C#中Array和object []有什么区别?
我正准备使用Enum.GetValues(),并开始想知道它为什么返回System.Array而不是object [].它与ComVisible属性有关吗?
这导致了一个问题,Array和object []之间有什么区别,如果有的话? 我知道Array可以用于静态方法,而T []不能但是实例有区别吗?它们似乎具有相同的实例方法/属性. 如果没有区别,为什么Enum.GetValues()返回Array而不是object []? 解决方法
因为object []会包含所有值.我们想要的是值本身的数组,而不是它们的盒装版本. 在泛仿制药C#中一般表示一般的唯一方法是Array.请记住,该API是CLR的第一个版本,缺少泛型. 在具有泛型的世界中,存在许多更好的可能设计. 坦率地说,在没有仿制药的世界中有更好的设计.立即想到的两个是:(1)这可能是Type上的实例方法,(2)C#编译器可以在每个枚举类型上生成公共静态MyEnum [] GetValues()方法.
据我所知.
我不知道如何回答“有什么不同”的问题.如果我问你“长颈鹿和哺乳动物有什么区别?”你会怎么回答呢?这是一个奇怪的问题. 数组是对象的基类[]是我能告诉你的最好的.
我也不明白这个问题.你能举一个“你可以用于静态方法”的例子吗? 也许你的意思是奇怪的是,通常你可以从派生类型访问类型的静态成员,但你不能使用数组类型?也就是说,你可以说: class B { public static void M() {} } class D : B {} ... B.M(); D.M(); // Same thing 这有效: Array.Sort(whatever); 但这不起作用: int[].Sort(whatever); 这是C#处理成员访问操作符的一个奇怪之处,但是如果你输入int []那就没什么好处的,这很奇怪.排序()赔率非常好,你做错了. 无论哪种方式,我都不知道它与你的问题有什么关系.你能澄清一下这个问题吗?
这个问题是不连贯的.如果你告诉我“白宫”和“宾夕法尼亚大道1600号”是同一个地址,那么我说“好吧,如果没有区别,那么为什么特朗普总统住在白宫而不是1600宾夕法尼亚大道?”你怎么回答我的疯狂问题?如果没有区别那么没有区别,那为什么重要呢? 在这种情况下,问题是基于错误的前提,因为object []和Array是不同的.但目前的问题无法回答. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |