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

Était-ce utile?

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top