Если я положу точку останова в строке currentrow = MyParser.ReadFields()
, currentrow по-прежнему будет содержать значения предыдущей строки, проанализированные из файла. После выполнения currentrow = MyParser.ReadFields()
текущие значения строки файла сохраняются.Почему значения в массиве сохраняются в цикле while? (VB.NET)
Поскольку currentrow объявлен внутри цикла While, не должно ли предыдущее значение текущего значения покидать область видимости при повторном входе в цикл While? Почему currentrow все еще сохраняет значения из последней строки в файле?
Нужно ли мне менять Dim currentrow As String()
на Dim currentRow() = New String() {}
? Зачем?
If File.Exists(filename) Then
Using MyParser As New FileIO.TextFieldParser(filename)
MyParser.TextFieldType = FileIO.FieldType.Delimited
MyParser.SetDelimiters("~")
While Not MyParser.EndOfData
Try
Dim currentrow As String()
'at this point, currentrow still contains prev values
currentrow = MyParser.ReadFields()
Catch
End Try
End While
End Using
End If
Это плохое использование File.Exists(). Просто откройте файл и обработайте FileNotFoundException. –
Кроме того, обязательно плохо, что currentrow все еще имеет старые значения, если вы правильно структурируете цикл? –
@JoelCoehoorn: Можете ли вы дать мне дополнительную информацию о различии между улавливанием исключения или проверкой с File.Exists() и почему последнее не так хорошо? – user1620141