Konvertieren Sie das C# -Format in VB
-
28-09-2019 - |
Frage
Ich bin mir sicher, dass dies eine einfache Frage für euch ist, aber ich weiß nicht, was dieser Entwickler tut.
name = String.Format(MyStringBuilder + "");
Wenn ich dies in VB konvertiere, erhalte ich die Meldung "Operator + ist nicht für Typen system.text.stringbuilder und String" definiert. Das gleiche, wenn ich benutze &.
Lösung
Im strengsten Sinne könnte MyStringbuilder im ursprünglichen Code eine Nullinstanz sein. An diesem Punkt würde ein expliziter Anruf bei .ToString () eine Ausnahme machen. Das angegebene Code -Beispiel würde jedoch ordnungsgemäß ausgeführt. In VB möchten Sie vielleicht sagen
Dim name As String
If MyStringBuilder Is Nothing Then
name = String.Empty
Else
name = MyStringBuilder.ToString()
End If
Andere Tipps
Es sieht so aus, als ob die Person, die es geschrieben hat, versucht, eine implizite Umwandlung von MyStringBuilder in eine Zeichenfolge zu erzwingen, die den + Operator in Verbindung mit der leeren Zeichenfolge verwendet.
Um diese Aufgabe in VB durchzuführen, benötigen Sie nur:
name = MyStringBuilder.ToString()
Das macht für mich keinen Sinn, weil das AFAICT nur ein Argument an String.format gibt.
Das Hinzufügen "" zum StringBuilder zwingt es nur zu einer Zeichenfolge.
name = MyStringBuilder.ToString();
Wäre das in C#, wie ich das tun würde. Das Konvertieren dieser Anweisung in VB sollte Ladungen einfacher sein.
Verwenden Sie MyStringBuilder.toString (). Das wird das Problem beheben.
Sie versuchen, ein StringBuilder -Objekt und eine String zusammenzuschließen - das würde nicht funktionieren :)
name = String.Format(MyStringBuilder.ToString() + "");
Dies sollte richtig kompilieren.
In VB.NET würden Sie ein "&" anstelle eines "+" verwenden
Diese Linie:
name = String.Format(MyStringBuilder + "");
Verursacht eine implizite Besetzung von MyStringBuilder (unter Verwendung der Methode (toString ()), um den "+" -Operator zu verwenden. Es ist dasselbe wie:
name = String.Format(MyStringBuilder.ToString() + "");
das ist das gleiche wie
name = MyStringBuilder.ToString();
das wird dies in vb.net:
name = MyStringBuilder.ToString()