这是一个非常简单的问题。
我正在尝试从.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
我该怎么办? 谢谢。
答案 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