new int[0] 和 new int[] 之间有啥区别吗[重复]

Posted

技术标签:

【中文标题】new int[0] 和 new int[] 之间有啥区别吗[重复]【英文标题】:Is there any difference between new int[0] and new int[] [duplicate]new int[0] 和 new int[] 之间有什么区别吗[重复] 【发布时间】:2017-10-17 22:13:34 【问题描述】:

我想初始化一个新的 int 数组。

有什么优点:

var myNewArray = new int[];

还有:

var myNewArray = new int[0];

我应该更喜欢哪一个,还是只是代码风格的问题?

【问题讨论】:

看这里:***.com/questions/5678216/… @Bartosz 感谢您的链接。但是,这是关于使用项目初始化数组。我特别想要一个空数组。 没有区别。但从 NET4.6 开始,首选方法是使用 Array.Empty<T>(),它返回一个单例实例。 @IvanStoev 非常感谢!我知道 Enumerable.Empty 但不知何故忽略了 Array.Empty. 【参考方案1】:

没有区别。两者都产生相同的 IL:

IL_0000:  nop         
IL_0001:  ldc.i4.0    
IL_0002:  newarr      System.Int32
IL_0007:  stloc.0     // myNewArray
IL_0008:  ret         

【讨论】:

以上是关于new int[0] 和 new int[] 之间有啥区别吗[重复]的主要内容,如果未能解决你的问题,请参考以下文章

type = (int) (((Math.random())*(new Date().getTime())*10)%4) 这句话是啥意思,产生啥样的结果?

C++ new int[0]——它会分配内存吗?

*p,(*p)[10],*p=new int[10],

new 与delete

05_指针之New()函数的使用

关于c语言中new的使用