Pregunta

Estoy seguro de que esta es una pregunta simple para ustedes, pero no sé qué está haciendo este desarrollador.

name = String.Format(MyStringBuilder + "");

Si lo convierto en VB, recibo el mensaje "Operador + no está definido para tipos System.Text.StringBuilder y String". Lo mismo si lo uso y.

¿Fue útil?

Solución

En el sentido más estricto, MyStringBuilder en el código original podría ser una instancia nula, momento en el cual hacer una llamada explícita a .ToString () lanzaría una excepción. Sin embargo, la muestra de código proporcionada se ejecutaría correctamente. En VB, es posible que desee decir

Dim name As String
If MyStringBuilder Is Nothing Then
   name = String.Empty
Else
   name = MyStringBuilder.ToString()
End If

Otros consejos

Parece que la persona que lo escribió está intentando forzar una conversión implícita de MyStringBuilder a una cadena utilizando el operador + en conjunción con la cadena vacía.

Para realizar esta tarea en VB solo necesita:

name = MyStringBuilder.ToString()

Eso no tiene sentido para mí porque AFAICT solo pasa un argumento a String.Format no hace nada.

Agregar "" al StringBuilder simplemente lo coacciona a una cadena.

name = MyStringBuilder.ToString(); Sería como haría esto en C#. La conversión de esa declaración a VB debería ser cargas más fáciles.

Use myStringBuilder.ToString (). Que solucionará el problema.

Estás tratando de concatenar un objeto StringBuilder y unir, eso no funcionaría :)

name = String.Format(MyStringBuilder.ToString() + "");

Esto debería compilar correctamente.

En vb.net usaría un "y" en lugar de un "+"

Esta línea:

name = String.Format(MyStringBuilder + "");

Está causando que un yeso implícito de myStringBuilder sea cadena (usando el método toString ()) para usar el operador "+". Es lo mismo que:

name = String.Format(MyStringBuilder.ToString() + "");

que es lo mismo que

name = MyStringBuilder.ToString();

que se convierte en esto en VB.NET:

name = MyStringBuilder.ToString()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top