【问题标题】:Why does Array.Copy support Long Arguments为什么 Array.Copy 支持长参数
【发布时间】:2010-09-21 21:42:00
【问题描述】:

来自MSDN

参数源数组

包含数据的数组 复制。目的地数组

接收数据的数组。 长度

一个 64 位整数,表示 要复制的元素数量。这 整数必须介于零和 Int32.MaxValue,含

鉴于允许的值范围是0Int32.MaxValue,添加此签名的动机是什么?它在 .Net 1.0 中不存在,仅在 .Net 1.1 中添加。我唯一的猜测是为 64 位框架实现做准备。

【问题讨论】:

  • 或遗留问题 - 永远不要忘记他们在 MS 也只是凡人。

标签: c# arrays


【解决方案1】:

奇怪的是,数组也有 GetItem 的重载,它采用 Int32 和 Int64。但实际上,在 .NET 框架的当前实现中,您不能拥有大于 2 GB 的单个对象,因此您实际上无法创建允许如此大索引的数组。

我猜如果这个限制稍后解除,那意味着他们不需要更改界面。

【讨论】:

  • 这让我想知道是否可以定义一个具有下限的数组 > int.MaxValue...
  • @dtb:不使用CreateInstance,因为长度参数是一个int。如果您尝试执行 Array my1DIntArray = Array.CreateInstance(typeof(Int64), new int[] { 3 }, new int[] { Int32.MaxValue - 1 }); 之类的操作,则会收到带有消息的 ArgumentOutOfRangeException Array my1DIntArray = Array.CreateInstance(typeof(Int64), new int[] { 3 }, new int[] { Int32.MaxValue - 1 });
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 2021-11-06
  • 2018-10-11
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多