我正在创建一个名为Job的类,并带有一个名为Tasks的属性。 Tasks是Task(另一个类)类型的数组。我可以使用返回数组的公共只读属性返回Tasks集合,但是如何实现将任务添加到Tasks的add方法?
我从一个简单的课程开始,研究了Write Own "Add" Method For An Array和Add 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
。所以我的基本问题是属性的实现和属性的方法。
答案 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/832052和https://stackoverflow.com/a/400144/832052