Convertire C formato # a VB
-
28-09-2019 - |
Domanda
Sono sicuro che questo è una semplice domanda per voi ragazzi, ma io non so cosa questo sviluppatore sta facendo.
name = String.Format(MyStringBuilder + "");
Se converto questo per VB ottengo il messaggio "operatore + non è definito per i tipi System.Text.StringBuilder e la stringa". Stessa cosa se uso &.
Soluzione
In senso stretto, myStringBuilder nel codice originale potrebbe essere un esempio nullo, a questo punto si effettua una chiamata esplicita a .ToString () sarebbe un'eccezione. Il codice di esempio fornito sarebbe eseguire correttamente, tuttavia. In VB, si potrebbe voler dire
Dim name As String
If MyStringBuilder Is Nothing Then
name = String.Empty
Else
name = MyStringBuilder.ToString()
End If
Altri suggerimenti
Sembra come se la persona che lo ha scritto sta tentando di forzare una conversione implicita di myStringBuilder in una stringa utilizzando l'operatore + in congiunzione con la stringa vuota.
Per eseguire questo compito in VB è sufficiente:
name = MyStringBuilder.ToString()
Non ha senso per me perché AFAICT passare un solo argomento per String.Format non fa nulla.
L'aggiunta di "" al StringBuilder solo costringe in una stringa.
name = MyStringBuilder.ToString();
sarebbe come mi piacerebbe fare questo in C #. Conversione che la dichiarazione di VB dovrebbe essere un sacco più facile.
Usa MyStringBuilder.ToString (). Che risolverà il problema.
Si sta cercando per concatenare un oggetto StringBuilder e String insieme - che non avrebbe funzionato:)
name = String.Format(MyStringBuilder.ToString() + "");
Questo dovrebbe compilare correttamente.
In VB.NET si userebbe un "&" invece di un "+"
Questa riga:
name = String.Format(MyStringBuilder + "");
sta causando un cast implicito myStringBuilder a stringa (utilizzando il metodo ToString ()), al fine di utilizzare l'operatore "+". E 'lo stesso di:
name = String.Format(MyStringBuilder.ToString() + "");
, che è lo stesso di
name = MyStringBuilder.ToString();
che diventa tale in VB.NET:
name = MyStringBuilder.ToString()