我有这个代码来分阶段文本文件,格式化它,然后为每个新行创建一个List(Of String)。现在我想做的是从List(Of String)中创建一个类,这样它就可以从程序中的任何地方访问,并且能够传递一个整数参数,它应该返回整数索引的字符串值列表(字符串)。 (我想不确定这是不是正确的做法?)有点混乱**
所以例如: 说我有以下
Dim gcodelist As New List(Of String)
Dim lines As String() = TextBox1.Text.Split(New String() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
For Each l As String In lines
gcodelist.Add(l)
Next
我希望能够将该代码转换为类,以便在Main sub()中我可以调用例如
Sub Main()
MsgBox(Gcodeblock(5))
End Sub
它应该将List(Of String)数组的gcodelist(5)打印到msg框
答案 0 :(得分:1)
使用索引器('Item'方法)创建一个Gcodeblock类:
Public Class Gcodeblock
Private gcodelist As New List(Of String)
Public Sub New(ByVal text As String)
Dim lines As String() = text.Split(New String() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
For Each l As String In lines
gcodelist.Add(l)
Next
End Sub
Default Public ReadOnly Property Item(ByVal index As Integer) As String
Get
Return gcodelist(index)
End Get
End Property
End Class
并像这样使用它:
Dim GcodeblockInstance = New Gcodeblock(yourText)
MsgBox(GcodeblockInstance(0))
我的示例使用只读索引器,但没有理由让它无法写入(删除'ReadOnly'关键字并添加'Set'块)。
或者您可以从List(Of String)继承:
Public Class Gcodeblock
Inherits List(Of String)
Public Sub New(ByVal text As String)
Dim lines As String() = text.Split(New String() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
For Each l As String In lines
MyBase.Add(l)
Next
End Sub
End Class