【问题标题】:Array and List length isn't as initialized数组和列表长度未初始化
【发布时间】:2019-07-29 07:54:43
【问题描述】:

好吧,我很困惑。我已经编码了很长一段时间,但从未见过。

当我像这样在VB.NET 中创建一个数组时

Dim arr(2) as Object

然后自己获取长度(调试器或代码),它返回3。 当我创建一个长度为0 的数组时,它的大小是1

当我创建一个 List (new List(1) -> count:2) 时,也会发生同样的情况

这有什么意义。我以前从未在任何其他语言中看到过这种行为......

有人对此有解释吗?

谢谢。

【问题讨论】:

  • 为什么这被标记为 C#?我认为目前最重要的事情是弄清楚您使用的语言。通过阅读文档也可以立即回答这个问题
  • 在 C# 中,对于List<T>,我们有一个名为List<T>(Int32) 的构造函数,其中参数Int32 用于容量。如果您创建容量为 2 的 List 实例,例如 List<int> listInt = new List<int>(2);,那么 listInt.Capacity 会给您的结果为 2

标签: arrays .net vb.net size


【解决方案1】:

docs你有答案

当您使用 Visual Basic 语法来定义数组的大小时,您 指定它的最高索引,而不是 数组。

Dim arr(2) 创建一个以 2 作为最后索引的数组,这意味着索引 0-2 有 3 个位置。

【讨论】:

  • @DaedraEYE : 如果 Guy 的回答解决了您的问题,请将其标记为 已接受,以便您奖励他/她帮助您,并向其他人清楚表明您的问题已解决。可以通过点击帖子左侧的勾选/复选标记来接受答案。更多信息请参考:How does accepting an answer work?
  • 您询问的语言非常重要,因为在 C# 中它是元素的数量。
  • @Mary 是的,我来自 C#,而且,tbh,thougth,因为这两种语言都是 .NET,所以它们在这方面的工作方式相似。
  • @DaedraEYE 不要觉得自己很蠢!它们应该是相同的,但是 vb 程序员已经足够处理从 vb6 迁移的问题了。更改数组声明会破坏旧代码。在 List(Of T) 之前的日子里,有很多数组。现在我们都可以使用 List(Of T) 来避免冲突。
猜你喜欢
  • 2012-04-24
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 2014-12-04
  • 2011-06-05
  • 2013-06-24
  • 2012-11-13
  • 1970-01-01
相关资源
最近更新 更多