我想为一个声明的数组写一个.Add方法。编写自己的“添加”方法为一个数组
的逻辑是,如果你的代码是这样的:
那你可以调用Add方法,并给起了个名字参数添加元素。 带额外的元素应该加上+1,然后再加上前面的最高索引。 所以在上面的情况......如果你会说:
add(Liz)
然后输出必须是:
names(0) = "john"
names(1) = "jane"
names(2) = "mary"
names(3) = "Liz"
Thanx提前
我想为一个声明的数组写一个.Add方法。编写自己的“添加”方法为一个数组
的逻辑是,如果你的代码是这样的:
那你可以调用Add方法,并给起了个名字参数添加元素。 带额外的元素应该加上+1,然后再加上前面的最高索引。 所以在上面的情况......如果你会说:
add(Liz)
然后输出必须是:
names(0) = "john"
names(1) = "jane"
names(2) = "mary"
names(3) = "Liz"
Thanx提前
我有Finnaly找到它了。所以这里是这笔交易......
所以要做到这一点,我们需要一个对象名称为Employee的类。 员工有像一个名称作为一个字符串的成员...和一个字符串的部分...
看到它作为一个公司的雇员在一个名称..并在一个分开的部分工作..
代码在这里:
Public Class Employee
Public Property Name As String
Public Property Section As String
End Class
Ofcourse现在这东西的阵列。在这个例子中,我们将创建一个可以容纳雇员类型不同的对象的数组。为此,我们将创建一个我们将调用EmployeeCollection的类。当然,在这个类中,我们将需要一个字段,其中包含一个变量,该变量包含雇员类型的对象数组(1) 现在,我想添加一个项目,我写了子项AddItem与雇员类型的参数(2)。
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
我们建立并使用此代码我做了一个consoleapplication,并在模块1 我输入我的代码在Sub为主。
在那个sub main中我们必须声明一个对象类型employeeCollection的变量。 这是需要的,所以我们可以使用AddItem asswell作为Items()数组。在这种情况下,我把它称为集合(3)。
ofcourse之前,我们可以添加一些类型的对象我们需要先创建它们。 这就是为什么我做了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
这是我需要的东西......如果你不想使用列表的
ofcourse它更容易使用的...列表,但如果你想要的东西这是非常好的以你自己的方式做到这一点?使用这个和平fosa
你可以写为字符串数组的扩展方法,像这样:
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)
为什么不只是使用列表而不是数组? –
为什么你需要一个数组?你需要能够使用数组语法来访问它吗?像这样Dim x As Integer = myArray(i)'?如果是这样,List(Of T)就是这样工作的。 –
[向阵列添加项目的最快方式]的可能重复(http://stackoverflow.com/questions/18097756/fastest-way-to-add-an-item-to-an-array) –