你会怎么用VB.NET写这个?

时间:2016-07-28 23:33:26

标签: c# vb.net c#-to-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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这应该使用经典模式:

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是一种糟糕的模式,只会使你的代码不清楚。

答案 2 :(得分:0)

如果您担心代码可读性,那么在您的情况下使用纯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