在自定义类中实现数组类型属性的添加方法

时间:2019-05-17 19:57:16

标签: arrays vb.net class

我正在创建一个名为Job的类,并带有一个名为Tasks的属性。 Tasks是Task(另一个类)类型的数组。我可以使用返回数组的公共只读属性返回Tasks集合,但是如何实现将任务添加到Tasks的add方法?

我从一个简单的课程开始,研究了Write Own "Add" Method For An ArrayAdd new item to Object Array以及许多其他课程。我的思维方式有一个固有的错误,我不知道找到正确解决方案的正确术语。

Public Class Job
    Private _taskcount As Integer
    Private _tasks() As Task
    Public ReadOnly Property TaskCount
        Get
            Return _taskcount
        End Get
    End Property
    Public ReadOnly Property Tasks As Task()
        Get
            Return tasks
        End Get
    End Property
End Class

我希望能够dim myjob as new job然后再进行myjob.tasks.add,但是我不知道Add方法在类定义中的位置。添加添加方法的帮助将不胜感激。

编辑:我还了解到TaskCount属性应实现为Tasks.Count。所以我的基本问题是属性的实现和属性的方法。

1 个答案:

答案 0 :(得分:1)

这是编写类的一种可能的方法,在将您的List公开为IEnumerable的同时保护您的Public Class Job Private _tasks As New List(Of Task) Public ReadOnly Property TaskCount As Integer Get Return _tasks.Count End Get End Property Public ReadOnly Property Tasks As IEnumerable(Of Task) Get Return _tasks End Get End Property Public Sub AddTask(t As Task) _tasks.Add(t) End Sub End Class

myJob.Tasks.Count

由于您的列表具有Count属性,因此我们不需要缓存任务计数。

我也看不到需要TaskCount属性,因为您可以从Dim myJob As New Job()中获取它。该属性可以[读取:应]被删除。

现在,您还提到您希望先做myJob.Tasks.Add然后再做Tasks。您可以像下面那样公开显示该列表,使Public Class Job Public ReadOnly Property Tasks As New List(Of Task) End Class 只读。

Dim myJob As New Job()

现在任何人都可以执行myJob.Tasks.Add然后执行List,并且由于Tasks为ReadOnly,因此没有人可以重新分配它(我的意思是NOBODY,即使在类内部(在构造函数之外!)...)。但是现在您可以访问{{1}}

的所有属性和方法

在不知道您的特定要求的情况下,没有正确的答案。但是,有关该主题的讨论很多。参见https://stackoverflow.com/a/387973/832052https://stackoverflow.com/a/400144/832052