你会如何在VB.NET中写这个?
我从来没有真正学过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
不,转换器不工作,我已经尝试过。
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”语句,如果你能忍受与一个“退出做”无条件循环 - 只是陈述选项:
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
陈述。
个人而言,Telerik建议的InlineAssignHelper
是一个不好的模式,它只是让你的代码不清楚。
如果您担心您的代码可读性,那么在您的情况下使用纯粹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文森特)
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
您的第一个示例将不起作用 - 当线条最终变为'Nothing'时,您在'循环直到'条件被检查之前使用它,所以您将获得空引用异常。 –
@DaveDoknjas,如果使用line可以处理'null'值,它将工作。但你是对的,第一个例子将需要额外的检查。我添加了第一个示例,因为“Loop Until line Is Nothing”部分是可读性的很好例子:) – Fabio
你尝试了吗?它编译了吗?它运行正确吗?此外,代码似乎转换罚款在这里http://converter.telerik.com/ – DavidG
我不知道InlineAssignHelper是什么? –
我在这里找到了我的答案:http://www.c-sharpcorner.com/forums/inlineassignhelper –