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 &.

War es hilfreich?

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top