【问题标题】:Initialise an VB .NET String Array初始化一个 VB .NET 字符串数组
【发布时间】:2011-07-05 07:24:19
【问题描述】:

如何在 VB.NET 中创建对象数组(另一个类)并对其进行初始化。由于我不确定数组的长度,所以它应该是通用的。我的意思是我应该能够将任意数量的对象添加到数组中。 注意:我对通用列表非常熟悉,但我的客户给了我对象数组:(

【问题讨论】:

  • 考虑使用 System.collection.Generic 命名空间的列表集合
  • 哎呀,我后来读了你的NB,抱歉:)
  • 您不能向数组中添加任意数量的对象。数组不能动态调整大小。为此,您需要一个 ArrayList,这是在 Collections 命名空间中找到的其他类之一。
  • @Cody Gray 这不是真的 - 你可以使用 ReDim 声明
  • @VMAtm: ReDim 不是运算符,而是语句。它的使用有很多重要的注意事项,比如你只能调整数组的 last 维度的大小,这使得它对于多维数组的使用非常不灵活。同样,这实际上重新创建了整个数组(如果您指定 Preserve 选项,则将原始项目复制回新创建的数组中)。这是一项相当昂贵的操作,而且完全不等同于使用 Collection 类所获得的行为。

标签: .net vb.net arrays


【解决方案1】:

我应该可以向数组中添加任意数量的对象

简单地说,你不能,数组不可调整大小。你可以使用Array.Resize(或ReDim Preserve),但这会重新分配整个数组并且运行时间很糟糕。

根据您的目的使用列表 (List(Of T))。如果您以数组的形式获取输入,则只需转换此输入即可:

Dim lst As New List(Of YourObject)(inputArray)

同样对于返回值:如果需要返回一个数组,使用列表的ToArray()方法。

但是在公共接口中使用数组(即作为公共方法的参数和返回值)是糟糕的设计,无论如何都不应该这样做。与您的客户讨论此事。

【讨论】:

  • 但是在公共接口中使用数组(即作为公共方法的参数和返回值)是不好的设计,无论如何都不应该这样做。和你的客户谈谈这个。
猜你喜欢
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2011-05-15
相关资源
最近更新 更多