Конвертировать формат C # в VB - PullRequest
1 голос
/ 19 апреля 2010

Я уверен, что это простой вопрос для вас, ребята, но я не знаю, что делает этот разработчик.

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

Если я преобразую это в VB, я получаю сообщение «оператор + не определен для типов system.text.stringbuilder и string». То же самое, если я использую &.

Ответы [ 6 ]

11 голосов
/ 19 апреля 2010

Похоже, что человек, который его написал, пытается принудительно преобразовать MyStringBuilder в строку, используя оператор + в сочетании с пустой строкой.

Для выполнения этого задания в VB вам нужно только:

name = MyStringBuilder.ToString()
5 голосов
/ 19 апреля 2010

В самом строгом смысле MyStringBuilder в исходном коде может быть пустым экземпляром, и в этот момент явный вызов .ToString () вызовет исключение. Однако приведенный пример кода будет работать правильно. В VB вы можете сказать

Dim name As String
If MyStringBuilder Is Nothing Then
   name = String.Empty
Else
   name = MyStringBuilder.ToString()
End If
2 голосов
/ 19 апреля 2010

Это не имеет смысла для меня, потому что AFAICT, передающий только один аргумент в string.format, ничего не делает.

Добавление "" к строителю строки просто приводит его к строке.1004 *name = MyStringBuilder.ToString(); было бы так, как я сделал бы это в C #.Преобразование этого оператора в VB должно быть намного проще.

1 голос
/ 19 апреля 2010

Используйте MyStringBuilder.ToString (). Это решит проблему.

0 голосов
/ 19 апреля 2010

В VB.NET вы должны использовать «&» вместо «+»

Эта строка:

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

вызывает неявное приведение MyStringBuilder к строке (используя метод ToString ()) для использования оператора "+" Это так же, как:

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

, что совпадает с

name = MyStringBuilder.ToString();

, который становится этим в VB.NET:

name = MyStringBuilder.ToString()
0 голосов
/ 19 апреля 2010

Вы пытаетесь объединить объект StringBuilder и String вместе - это не будет работать:)

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

Это должно правильно скомпилироваться.

...