簡體   English   中英

為數組編寫自己的“添加”方法

[英]Write Own “Add” Method For An Array

我想為聲明的數組編寫一個.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"

Thanx提前

您可以為字符串數組編寫擴展方法,如下所示:

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)

我有Finnaly找到它。 所以這里是交易...

因此,要實現這一點,我們需要創建一個具有對象名稱為Employee的類。 Employee的成員喜歡Name作為字符串......以及作為字符串的部分......

將其視為具有名稱的公司中的員工..並且在單獨的部分中工作。

代碼在這里:

Public Class Employee

    Public Property Name As String
    Public Property Section As String
End Class

當然是陣列的事情。 在這個例子中,我們將創建一個可以容納雇員類型的不同對象的數組。 為此,我們將創建一個我們將調用EmployeeCollection的類。 當然,在那個類中,我們需要一個包含變量的字段,該變量包含employee類型的對象數組(1)現在,對於我想要添加項的方法,我使用employee類型的參數編寫了子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

現在建立並使用這個代碼我做了一個控制台應用程序,在Module1中我在Sub Main中鍵入了我的代碼。

在那個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM