我想为声明的数组编写一个.Add方法。
逻辑是如果您编写类似这样的代码:
Sub Main()
Dim names(2) As String
names(0) = "john"
names(1) = "jane"
names(2) = "mary"
End Sub
您可以调用Add方法并将名称作为参数来添加元素。 带有额外元素的元素应该加上+1然后是前一个最高索引。 所以在上面的情况下...如果你愿意:
add(Liz)
然后输出必须是:
names(0) = "john"
names(1) = "jane"
names(2) = "mary"
names(3) = "Liz"
提前完成
答案 0 :(得分:2)
您可以为字符串数组编写扩展方法,如下所示:
Public NotInheritable Class ArrayExtensions
Private Sub New()
End Sub
<System.Runtime.CompilerServices.Extension> _
Public Shared Sub Add(Of T)(theArray As T(), t As T)
Dim newSize As Integer = theArray.Length + 1
Array.Resize(theArray, newSize)
theArray(newSize - 1) = t
End Sub
End Class
然后你可以这样称呼它:
Dim SomeArray(5) as String
SomeArray.Add(SomeElementAsString)
不幸的是,虽然这可以满足您的使用需求,但数组不是引用,因此在扩展方法中完成的更改会被删除,因为它只是在处理副本。这就是为什么大多数人会建议使用List(Of T)
,因为它内置了基于引用的Add
方法,但您不希望如此,因此您只有这样的选项:
Public NotInheritable Class ArrayUtilities
Private Sub New()
End Sub
Public Shared Sub Add(Of T)(ByRef theArray As T(), t As T)
Dim newSize As Integer = theArray.Length + 1
Array.Resize(theArray, newSize)
theArray(newSize - 1) = t
End Sub
End Class
以下是使用上述代码的方法:
Dim SomeArray(5) as String
ArrayUtilities.Add(SomeArray, SomeElementAsString)
答案 1 :(得分:0)
我有Finnaly找到它。所以这是交易...
为了实现这一点,我们需要创建一个对象名为Employee的类。 Employee的成员如Name作为字符串......以及作为字符串的部分......
将其视为具有名称的公司中的员工..并且在单独的部分中工作..
代码在这里:
Public Class Employee
Public Property Name As String
Public Property Section As String
End Class
当然是阵列的事情。在这个例子中,我们将创建一个可以容纳雇员类型的不同对象的数组。为此,我们将创建一个我们将调用EmployeeCollection的类。当然,在该类中,我们需要一个包含变量的字段,该变量包含employee(1)类型的对象数组 现在,对于我想要添加项目的方法,我使用employee(2)类型的参数编写了子AddItem。
Public Class EmployeeCollection
Public Items As Employee() = {} '(1)
Public Sub AddItem(item As Employee) '(2)
ReDim Preserve Items(Items.Length)
Items(Items.Length - 1) = item
End Sub
End Class
现在建立并使用这段代码,我在Module1中创建了一个consoleapplication 我在Sub Main中键入了我的代码。
在那个子主中我们必须声明一个对象类型employeeCollection的变量。 这是必需的,因此我们可以作为Items()数组访问AddItem asswell。在这种情况下,我称之为anCollection(3)。
在我们可以添加一些Employee类型的对象之前我们需要首先创建它们。 这就是我创造employee1和employee2的原因。请注意,with .name和.section将填写Employee(4)类的成员。然后就是时候调用anCollection和一个项目了。 我添加了其中两个。
然后最后一项任务是查看数组中的内容。如果你看起来很好,你可以看到对象存储在公共字段中的项目
所以我们需要通过对象anCollection来调用它。如果我们运行这个..我们会看到所有对象都添加到列表中。
Module Module1
Sub Main()
Dim anCollection As New EmployeeCollection() '(3)
'(4)
Dim employee1 As New Employee With {.Name = "John", .Section = "Reception"}
Dim employee2 As New Employee With {.Name = "Maria", .Section = "Catering Services"}
anCollection.AddItem(employee1)
anCollection.AddItem(employee2)
Console.WriteLine(anCollection.Items(0).Name & " " & anCollection.Items(0).Section)
Console.WriteLine(anCollection.Items(1).Name & " " & anCollection.Items(1).Section)
Console.ReadLine()
End Sub
End Module
这就是我需要的......如果你不想使用列表
,那就太好了当然它更容易使用列表...但是如果你想以自己的方式做到这一点怎么办?用这个和平fosa