Convertir C # format à VB
-
28-09-2019 - |
Question
Je suis sûr que ce soit une question simple pour vous les gars, mais je ne sais pas ce que ce développeur fait.
name = String.Format(MyStringBuilder + "");
Si je convertir en VB je reçois le message « opérateur + n'est pas défini pour les types System.Text.StringBuilder et string ». Même chose si j'utilise &.
La solution
Dans le sens le plus strict, MyStringBuilder dans le code d'origine pourrait être une instance nulle, à quel point faire un appel explicite à .ToString () jetterait une exception. L'exemple de code fourni exécuterait correctement, cependant. En VB, vous pouvez dire
Dim name As String
If MyStringBuilder Is Nothing Then
name = String.Empty
Else
name = MyStringBuilder.ToString()
End If
Autres conseils
Il semble que la personne qui l'a écrit tente de forcer une conversion implicite de MyStringBuilder à une chaîne en utilisant l'opérateur + conjointement avec la chaîne vide.
Pour effectuer cette tâche en VB vous avez seulement besoin:
name = MyStringBuilder.ToString()
Cela n'a pas de sens pour moi parce que AFAICT passer un seul argument à string.format ne fait rien.
Ajout « » au stringbuilder juste à contraint une chaîne.
name = MyStringBuilder.ToString();
serait comment je ferais cela en C #. Conversion de cette déclaration à VB devrait être plus facile des charges.
Utilisation MyStringBuilder.ToString (). Cela corrigera le problème.
Vous essayez de concaténer un objet StringBuilder et Enchaîner - qui ne fonctionnerait pas:)
name = String.Format(MyStringBuilder.ToString() + "");
Cela devrait compiler correctement.
Dans VB.NET vous utiliseriez une « et » au lieu d'un « + »
Cette ligne:
name = String.Format(MyStringBuilder + "");
est à l'origine d'une distribution implicite de MyStringBuilder à la chaîne (en utilisant la méthode ToString ()) afin d'utiliser l'opérateur « + ». Il est le même que:
name = String.Format(MyStringBuilder.ToString() + "");
qui est la même que
name = MyStringBuilder.ToString();
qui devient ceci dans VB.NET:
name = MyStringBuilder.ToString()