3

А вот вопрос

Андрей Трусов
22 апреля 2010 года

Не проверяя, кто сможет ответить, какой результат будет у выполнения следующей строки?

string s = "123" + null + "456"; // C#

А вот у такой?

Dim s as String = "123" + Nothing + "456" ' VB.NET

Метки: ,

3 комментария к записи «А вот вопрос»

  1. Trurl,

    в обоих случаях s="123456"

  2. suslik2,

    Во втором случае — вряд ли, потому что в Basic конкатенация строк делается с помощью амперсанда. Там будеь или Syntax Error, или (о Боже!) компилятор воспримет это всё как команду сложить два числа с пустотой и результат запишет как строку.

  3. ast,

    В обоих случаях будет "123456".

    Плюс в VB.NET работает как конкатенация строк только в случае если оба аргумента — строки. Если один из аргументов — число, то второй аргумент будет приводиться (пытаться) к числу тоже.

    А амперсанд в VB.NET вызывает принудительное приведение к строке (ToString) для левого и правого аргументов:

    Dim s1 As String = 123 + 456 ‘вернет "578"
    Dim s2 As String = 123 & 456 ‘вернет "123456"

Ответить на сообщение Trurl