C#中Array和object []有什么区别?

前端之家收集整理的这篇文章主要介绍了C#中Array和object []有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@
我正准备使用Enum.GetValues(),并开始想知道它为什么返回System.Array而不是object [].它与ComVisible属性有关吗?

这导致了一个问题,Array和object []之间有什么区别,如果有的话?

我知道Array可以用于静态方法,而T []不能但是实例有区别吗?它们似乎具有相同的实例方法/属性.

如果没有区别,为什么Enum.GetValues()返回Array而不是object []?

解决方法

I was about to use Enum.GetValues() as normal,and started wondering why it returns a System.Array instead of object[].

因为object []会包含所有值.我们想要的是值本身的数组,而不是它们的盒装版本.

在泛仿制药C#中一般表示一般的唯一方法是Array.请记住,该API是CLR的第一个版本,缺少泛型.

在具有泛型的世界中,存在许多更好的可能设计.

坦率地说,在没有仿制药的世界中有更好的设计.立即想到的两个是:(1)这可能是Type上的实例方法,(2)C#编译器可以在每个枚举类型上生成公共静态MyEnum [] GetValues()方法.

Is it something to do with the ComVisible attribute?

据我所知.

What is the difference between Array and object[],if any?

我不知道如何回答“有什么不同”的问题.如果我问你“长颈鹿和哺乳动物有什么区别?”你会怎么回答呢?这是一个奇怪的问题.

数组是对象的基类[]是我能告诉你的最好的.

I know Array can be used for static methods whilst T[] cannot but is there a difference for instances?

我也不明白这个问题.你能举一个“你可以用于静态方法”的例子吗?

也许你的意思是奇怪的是,通常你可以从派生类型访问类型的静态成员,但你不能使用数组类型?也就是说,你可以说:

class B { public static void M() {} } 
class D : B {}
...
B.M();
D.M(); // Same thing

这有效:

Array.Sort(whatever);

但这不起作用:

int[].Sort(whatever);

这是C#处理成员访问操作符的一个奇怪之处,但是如果你输入int []那就没什么好处的,这很奇怪.排序()赔率非常好,你做错了.

无论哪种方式,我都不知道它与你的问题有什么关系.你能澄清一下这个问题吗?

If there is no difference,why does Enum.GetValues() return Array instead of object[]?

这个问题是不连贯的.如果你告诉我“白宫”和“宾夕法尼亚大道1600号”是同一个地址,那么我说“好吧,如果没有区别,那么为什么特朗普总统住在白宫而不是1600宾夕法尼亚大道?”你怎么回答我的疯狂问题?如果没有区别那么没有区别,那为什么重要呢?

在这种情况下,问题是基于错误的前提,因为object []和Array是不同的.但目前的问题无法回答.

猜你在找的C#相关文章