2016-07-28 22 views
0

私はVB.NETを本当に学んだことはありません。これはVB.NETでどのように書くのでしょうか?ここでこれはVB.NETでどのように記述しますか?

はコードです:

System.IO.StreamReader file = new System.IO.StreamReader(ofd_tracking_file.FileName); 
while ((line = file.ReadLine()) != null) 
{ 
} 

が、それはこのようなものでしょうか?

いいえ、コンバーターが動作しない、私はすでに試してみました。

+1

は、あなたがそれを試してみました私の意見で読みやすくなりますEndOfStreamプロパティを使用していますか?それはコンパイルしましたか?それは正しく実行されましたか?また、コードはここでうまく変換するようだhttp://converter.telerik.com/ – DavidG

+0

私はInlineAssignHelperが何であるかわからないのですか? –

+0

私の答えはここにあります:http://www.c-sharpcorner.com/forums/inlineassignhelper –

答えて

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メソッド」ステートメントを回避することができます - ちょうどのオプションを述べ:

Do 
    line = file.ReadLine() 
    If line Is Nothing Then Exit Do 
    ... 
Loop 
0

これがなければなりませんあなたは2が要求されているものの、このアプローチの利点は、単一のガード文が必要なことである

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 

:の古典的なパターンを使用してトリックを行いますステートメント。

Telerikによって提案されたInlineAssignHelperは、コードが不明瞭になるだけの悪いパターンです。

+0

@sstan編集のおかげで、なぜそれが言語の権利を認識していなかったのか分かりませんでした:) – MickyD

+1

C#タグがこの特定の質問のVB.NETタグより先行しているからです。そのような場合は、構文ハイライトの言語を明示的に設定する必要があります。 – sstan

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 

または(@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 
+0

あなたの最初の例はうまくいきません - 行が 'Nothing'になると 'loop until'条件がチェックされる前に使用されているので、null参照例外が発生します。 –

+0

@DaveDoknjas、 'null'値を扱うことができるならば動作します。しかし、最初の例では余分なチェックが必要になることは間違いありません。最初の例を追加しました。なぜなら、 'Loop Until line Is Nothing'の部分は読みやすさの非常に良い例だからです:) – Fabio

関連する問題