Обработка строк с и или + в VB.NET

cdecl предлагает интерфейс командной строки так, давайте дадим ему попытку:

cdecl> explain int ***c[][]
declare c as array of array of pointer to pointer to pointer to int

другой пример

explain int (*IMP)(ID,SEL) 
declare IMP as pointer to function (ID, SEL) returning int

Однако существует целая глава об этом в книге "C Непостижимые тайны", названный "Восстанавливание объявлений в C.

25
задан Peter Mortensen 19 March 2013 в 09:44
поделиться

5 ответов

Операторы + и & не идентичны в VB.NET.

Использование оператора & указывает на ваше намерение объединить строки, а оператор + указывает на ваше намерение складывать числа . Использование оператора & преобразует обе стороны операции в строки. Если у вас смешанные типы (одна сторона выражения - строка, другая - число), результат будет определяться использованием оператора.

1 + "2" = 3 'This will cause a compiler error if Option Strict is on'
1 & "2" = "12"
1 & 2 = "12"
"text" + 2 'Throws an InvalidCastException since "text" cannot be converted to a Double'

Итак,

53
ответ дан 28 November 2019 в 18:17
поделиться

Подумайте, не лучше ли использовать String.Format при объединении строк. Обычно таким образом код становится более понятным.

Кроме того, если вы объединяете много раз, подумайте об использовании StringBuilder, а не String.

5
ответ дан 28 November 2019 в 18:17
поделиться

В общем случае & всегда объединяет строки независимо от типов аргументов, а + не буду. Поскольку в противном случае нет недостатков в использовании & over +, в ситуациях, когда вы явно хотите конкатенации строк, это предпочтительнее. Это также немного проясняет смысл кода.

3
ответ дан 28 November 2019 в 18:17
поделиться

Они идентичны в VB.NET при работе с двумя строками. Оператор «&» используется для обратной совместимости в VB 6 и ранее, где & был оператором конкатенации строк, а + не работал для текста.

Существует разница, если один из ваших двух операндов не является строкой, как указал Бдукс . Однако в этой ситуации я настоятельно рекомендую использовать String.Format или StringBuilder (в зависимости от количества / типов операций) для построения результирующей строки из смешанных типов.

В целом, я бы рекомендовал использовать + по единственной причине . Если вы когда-нибудь решите перевести код на другой язык (например, C #), оператор + будет больше соответствовать переведенной версии. Вероятно, людям, пришедшим с другого языка, будет легче понять ваш код и следовать ему.

2
ответ дан 28 November 2019 в 18:17
поделиться

Рекомендуемый метод - амперсанд. Оператор «плюс» иногда работает для конкатенации строк, но не считается правильным и иногда приводит к непредвиденным результатам.

2
ответ дан 28 November 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: