Pergunta

Tenho certeza de que esta é uma pergunta simples para vocês, mas não sei o que esse desenvolvedor está fazendo.

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

Se eu converter isso em VB, recebo a mensagem "Operador + não será definido para tipos system.text.stringbuilder and string". A mesma coisa se eu usar &.

Foi útil?

Solução

No sentido mais estrito, o MyStringBuilder no código original pode ser uma instância nula, quando fazer uma chamada explícita para .toString () lançaria uma exceção. A amostra de código fornecida seria executada corretamente, no entanto. Em VB, você pode querer dizer

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

Outras dicas

Parece que a pessoa que escreveu está tentando forçar uma conversão implícita do MyStringBuilder em uma string usando o operador + em conjunto com a string vazia.

Para executar esta tarefa em VB, você só precisa:

name = MyStringBuilder.ToString()

Isso não faz sentido para mim porque o Afaict, passando apenas um argumento para String.Format, não faz nada.

Adicionando "" ao StringBuilder apenas o coerma a uma string.

name = MyStringBuilder.ToString(); Seria como eu faria isso em C#. A conversão dessa instrução em VB deve ser muito mais fácil.

Use myStringBuilder.toString (). Isso resolverá o problema.

Você está tentando concatenar um objeto StringBuilder e a string juntos - isso não funcionaria :)

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

Isso deve compilar corretamente.

Em vb.net, você usaria um "&" em vez de um "+"

Está linha:

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

Está causando um elenco implícito do MyStringBuilder a seqüência (usando o método tostring ()) para usar o operador "+". É o mesmo que:

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

que é o mesmo que

name = MyStringBuilder.ToString();

que se torna isso em vb.net:

name = MyStringBuilder.ToString()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top