2013-12-23 14 views
5

Ich wurde mit der Umwandlung einer Lösung von VB zu C# beauftragt. Es gab 22 Projekte und Hunderte von Kursen, also entschied ich mich, die Konverter zu erforschen. Ich habe mich schließlich für SharpDevelop entschieden, eine IDE mit integriertem Konverter. Ich habe es bei jedem meiner Projekte durchgeführt und habe viele Fehler zu beheben, aber ich sollte in der Lage sein, sie durchzugehen und sie hoffentlich herauszufinden. Das Hauptproblem, das ich habe, ist mit dem zusammenfassenden Protokoll. Ich habe Hunderte von Zeilen für verschiedene Klassen Lesung:Umwandlung von VB in C#

-- line 0 col 0: Case labels with binary operators are unsupported : Equality 
-- line 0 col 0: Case labels with binary operators are unsupported : Equality 
-- line 0 col 0: Case labels with binary operators are unsupported : Equality 
-- line 0 col 0: Case labels with binary operators are unsupported : Equality 
-- line 0 col 0: Case labels with binary operators are unsupported : Equality 

ich diese nachgeschlagen habe, aber ich bin nicht eine gute Erklärung zu finden, was es wirklich bedeutet, oder wie es zu korrigieren. das meiste, was ich finde, sind die Linien von kommentierten Code, der etwas sagen wie:

// ERROR: Case labels with binary operators are unsupported : LessThan 

40:

Könnte jemand bitte ein bisschen mehr Informationen darüber, welche Ursachen dieser Fehler bedeutet und wie es zu korrigieren. Vielen Dank.

+2

Sie haben gerade einen beschissenen Konverter benutzt. Es ist ein häufiges Problem, viele von ihnen machen so einen Job, wenn sie vb.net in C# umwandeln. Und du hast, was du bezahlt hast. Die vb.net Select Case-Anweisung ist einfach nicht so einfach in die C# switch-Anweisung zu konvertieren, sie ist viel weniger geeignet. Beginnen Sie am Anfang der Fehlerliste und arbeiten Sie sich nach unten, um die Fehler des Konverters zu beheben. –

+1

Ich weiß, dass Sie Ihre Konvertierung durchgeführt haben, aber für andere, die eine solche Aufgabe in Betracht ziehen, kann ich den Telerik-Konverter empfehlen, der online ist, kostenlos und Bulk-Dateien konvertieren kann. Ich habe dies für .net Web-Projekte verwendet und es hat sehr gut funktioniert. Ich bin mir nicht sicher, wie es mit diesen Typen von Case-Anweisungen zurechtkommt, da ich es immer nur benutzt habe, um von C# nach VB anstelle von VB nach C zu konvertieren. # – Mych

+1

Telerik verwendet die gleiche Konvertierungsbibliothek (NRefactory) wie SharpDevelop Dasselbe Problem. –

Antwort

6

Es bedeutet, dass in C# gibt es keine Entsprechung für Case Is = (Teil einer Select Case in VB) ... Außer natürlich, dass es wirklich ist.

Sie können umschreiben:

Case Is = 999 

als

case 999: 

in C#.

Es gibt wirklich keine Entsprechung für Case Is <, aber Sie müssen das mit if umschreiben.

6

Select in VB.NET hat ziemlich komplexere Syntax als seine C# Gegenstück, es gibt nichts, was Sie tun können, so müssen Sie Ihre Select Aussagen in if/else umschreiben:

Select myVariable 
    Case 1 
     ' Do #1 
    Case 2, 3 
     ' Do #1 
    Case Is < anotherValue 
     ' Do #3 
End Select 

Sie müssen neu schreiben :

if (myVariable == 1) 
    ; // #1 
else if (myVariable == 2 || myVariable == 3) 
    ; // #2 
else if (myVariable < anotherValue) 
    ; // #3 

mit C# switch Im allgemeinen kann man nur Test auf Gleichheit (das ist die Warnung Sie erhalten) so für etwas anderes muss man zu einem einfachenzurück.