VB如何使用迭代将项添加到类列表?

时间:2015-08-08 13:40:52

标签: vb.net list class

这是一个非常简单的问题。

我正在尝试从.txt文件中将项目添加到Inventory类列表中。但是,我不能在此行中使用“新”一词,否则会出现语法错误: 新库存(“Rod”,1)

Function GetInventory() As IEnumerable(Of Inventory)
    If System.IO.File.Exists(loc) = True Then
        If System.IO.File.ReadAllText(loc).Count > 0 Then
            Dim file As System.IO.StreamReader
            file = My.Computer.FileSystem.OpenTextFileReader(loc)
            Do While file.Peek() >= 0
                New Inventory("Rod", 1)
            Loop

            Return New Inventory

            file.Close()
        End If
    End If

End Function

我该怎么办? 谢谢。

1 个答案:

答案 0 :(得分:1)

根据您拥有的内容,您将整个文件读入内存两次。这太疯狂了。

另外,您不需要.Exists()检查。文件系统是 volatile ,这意味着当您检查.Exists()和尝试访问文件时,文件可能无法使用。一个好的程序仍然会有一个很好的异常处理程序,当文件不存在时,现在你有一个异常处理程序,.Exists()检查只是多余的。它没有为您节省您可能认为的性能损失。此外,此方法可能是处理异常的错误位置。在某处调用代码通常更好,这意味着你可以完全跳过错误检查。

您可以将整个方法缩减为单个语句,将执行时间缩短一半:

Function GetInventory(ByVal loc As String) As IEnumerable(Of Inventory)
    Return IO.File.ReadLines(loc).Select(Function(i) New Inventory(i, 1))
End Function