Converter formato C# para VB
-
28-09-2019 - |
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 &.
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()