Как бы вы написали это в VB.NET?
Я никогда не изучал VB.NET, как бы вы написали это в VB.NET?
Вот код:
System.IO.StreamReader file = new System.IO.StreamReader(ofd_tracking_file.FileName);
while ((line = file.ReadLine()) != null)
{
}
Будет ли это так?
Dim file As System.IO.StreamReader = New System.IO.StreamReader(ofd_tracking_file.FileName)
While Not line = file.ReadLine() = Nothing
End While
И нет, конвертеры не работают, я уже пробовал.
3 ответа
Код C# использует присваивание в выражении - они не доступны в VB. Эквивалент VB:
Dim file As New System.IO.StreamReader(ofd_tracking_file.FileName)
line = file.ReadLine()
Do While line IsNot Nothing
...
line = file.ReadLine()
Loop
Вы можете избежать дополнительной инструкции 'ReadLine', если можете выполнить безусловный цикл с помощью 'Exit Do' - просто указав опции:
Do
line = file.ReadLine()
If line Is Nothing Then Exit Do
...
Loop
Это должно сработать, используя классический шаблон:
Dim file As New System.IO.StreamReader(ofd_tracking_file.FileName)
Dim line = file.ReadLine()
While line IsNot Nothing
'blah blah
line = file.ReadLine()
End While
Преимущество этого подхода состоит в том, что требуется только одно защитное заявление, хотя вам необходимо иметь два ReadLine
заявления.
Лично InlineAssignHelper
предложенный Telerik плохой шаблон, который просто делает ваш код неясным.
Если вы беспокоитесь о читабельности своего кода, тогда используйте чистый vb.net
код будет лучшим выбором в вашем случае.
Using reader As New StreamReader(ofd_tracking_file.FileName)
Dim line As String = Nothing
Do
line = reader.ReadLine()
Debug.Write(line)
Loop Until line Is Nothing
End Using
или используя EndOfStream
собственность будет более читабельной на мой взгляд (спасибо @Visual Vincent)
Using reader As New StreamReader(ofd_tracking_file.FileName)
While reader.EndOfStream = false
Dim line As String = reader.ReadLine()
'use line value
End While
End Using