.net 类列表中的公共可枚举项
我有一个需要索引的类列表(基于另一个类的元素)。但是,我不确定如何使枚举数可供其他类、主窗体和嵌套类访问。以下是我的代码: 班级:.net 类列表中的公共可枚举项,.net,vb.net,.net,Vb.net,我有一个需要索引的类列表(基于另一个类的元素)。但是,我不确定如何使枚举数可供其他类、主窗体和嵌套类访问。以下是我的代码: 班级: Public Class Episodes Inherits Form1 Public Shared _Episodes As List(Of Events) Public Shared Property Episodes() As List(Of Events) Get Return _Episod
Public Class Episodes
Inherits Form1
Public Shared _Episodes As List(Of Events)
Public Shared Property Episodes() As List(Of Events)
Get
Return _Episodes
End Get
Set(value As List(Of Events))
_Episodes = value
End Set
End Property
Public Sub New(ByVal Episodes As List(Of Events))
_Episodes = New List(Of Events)
For Each Events As Events In S
For i As Integer = 0 To S.Count - 2
_Episodes.Add(S(i))
_Episodes.Add(S(i + 1))
Next
Next
End Sub
' ...
End Class
可枚举项:
Public Shared j As Integer = Enumerable.Count(Episodes, Function(Events) Events.EventTime)
有没有一种方法可以做到这一点,使代码的任何部分都可以调用可枚举项,即访问
剧集(S(i))
或剧集(S(i+1))
?现在看起来有点乱。每次创建剧集
对象时,其构造函数(Sub New
)都会用新列表覆盖共享的\u剧集
字段,然后从s
重新填充它(无论是什么)。\u剧集
列表已经通过名为剧集
的共享
属性进行了全局共享,但直到第一次创建剧集
对象时,才实际填充该列表。然后,正如我前面所说的,它会被覆盖,并用每个连续的片段
对象创建重新填充
因此,你的问题的简单答案是,你已经可以在全球范围内访问它,但它可能并没有按照你预期的方式工作。由于它是一个类的共享属性,当您从其他类中使用它时,必须使用类名作为前缀,如下所示:
Episodes.Episodes(S(i))
Module Module1
Public Property Episodes As List(Of Events)
End Module
如果不想指定类名,可以将列表放在模块中,而不是类中。例如,如果您创建了如下模块:
Episodes.Episodes(S(i))
Module Module1
Public Property Episodes As List(Of Events)
End Module
然后,您可以在项目中的任何位置使用它,而无需在其前面加上模块名,例如:
Episodes(S(i))
然而,就其本身而言,我并不真正推荐这些,因为我发现您的设计存在三个问题:
- 每次创建
对象时,您都在重新创建列表剧集
- 在创建第一个
对象之前,属性将为集
无
- 这些事件存储在全局变量中
(网上有很多关于为什么最好避免全球州和单身人士的解释,所以我不在这里重复。如果你不知道为什么全球人不好,我建议你做一些关于这个主题的研究)Steven,谢谢你的帮助。所以S是一个事件列表,我试图创建的是一个来自S的成对(片段)列表。如果S是一个事件列表=(a,1),(B,2),(C,3),(D,4);然后一个C集的列表,将是((a,1)(B,2)),((B,2)(C,3)),((C,3)(D,4))。所有这些都基于通过文本框加载的事件。我理解单例的问题,但我似乎无法用我试图重新创建的算法来解决这个问题,因为类片段(和可枚举项)有很多依赖项。基于此,你认为有更好的方法来建造这个吗?我很感谢你的帮助。我相信在某些情况下,全球合作是必要的,但它们之间的距离很远,而且很少。我能想到的唯一一次,你真正需要一个全局的时候,是当你必须只有一个对象作为你与某个单独的硬件或第三方进程或类似的东西的通信接口时。但即便如此,还是有更好的方法将其构建为单例,而不仅仅是将其声明为模块中的全局变量。在使用全局变量的情况下,使用依赖项注入(DI)而不是全局变量无法以更好的方式实现同一件事的情况很少。