2016-07-28 10 views
0

Ich habe VB.NET nie wirklich gelernt, wie würdest du das in VB.NET schreiben? HierWie würden Sie das in VB.NET schreiben?

ist der Code:

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

es so sein würde?

Dim file As System.IO.StreamReader = New System.IO.StreamReader(ofd_tracking_file.FileName) 

While Not line = file.ReadLine() = Nothing  
End While 

Und nein, Wandler funktionieren nicht, ich habe es bereits versucht.

+1

Haben Sie es versuchen? Hat es kompiliert? Hat es richtig funktioniert? Auch der Code scheint hier gut zu konvertieren http://converter.telerik.com/ – DavidG

+0

Ich weiß nicht, was InlineAssignHelper ist? –

+0

Ich habe meine Antwort hier gefunden: http://www.c-sharpcorner.com/forums/inlineassignhelper –

Antwort

1

Der C# -Code verwendet eine Zuweisung in Ausdruck - diese sind nicht in VB verfügbar. Die VB entspricht:

Dim file As New System.IO.StreamReader(ofd_tracking_file.FileName) 
line = file.ReadLine() 
Do While line IsNot Nothing 
    ... 
    line = file.ReadLine() 
Loop 

Sie können die Extra ‚Readline‘ Erklärung vermeiden, wenn Sie eine bedingungslose Schleife mit einem ‚Exit Do‘ können Magen - nur Optionen besagt:

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

Dies sollte das klassische Muster der Trick mit:

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 

der Vorteil dieses Ansatzes besteht darin, dass nur eine einzige Wache Anweisung erforderlich ist, wenn Sie verpflichtet sind, haben zwei ReadLine Anweisungen.

Persönlich ist die von Telerik vorgeschlagene InlineAssignHelper ein schlechtes Muster, das nur Ihren Code unklar macht.

+0

@ststan Danke für die Bearbeitung, ich konnte nicht herausfinden, warum es die Sprache nicht richtig erkannte :) – MickyD

+1

Es liegt daran, dass das C# -Tag in dieser speziellen Frage dem VB.NET-Tag voraus ist. In diesem Fall müssen Sie die Sprache für die Syntaxhervorhebung explizit festlegen. – sstan

0

Wenn Sie Bedenken hinsichtlich Ihrer Lesbarkeit des Codes haben, dann ist die Verwendung von reinem Code vb.net in Ihrem Fall die bessere Wahl.

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 

oder EndOfStream Eigenschaft verwendet wird besser lesbar auf meiner Meinung nach (dank @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 
+0

Ihr erstes Beispiel wird nicht funktionieren - wenn die Zeile schließlich 'Nothing' wird, bevor Sie die 'Schleife bis' Bedingung aktiviert ist, erhalten Sie eine Null-Referenz-Ausnahme. –

+0

@DaveDoknjas, wird es funktionieren, wenn die Verwendung von Zeile kann mit 'null' Wert umgehen. Aber Sie haben Recht, dass das erste Beispiel eine zusätzliche Überprüfung benötigt. Ich habe das erste Beispiel hinzugefügt, weil der Teil "Loop Until line Is Nothing" ein sehr gutes Beispiel für Lesbarkeit ist :) – Fabio

Verwandte Themen