Эквивалент Microsoft.VisualBasic.Chr(0)

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Williams » 08.03.2009 (Вс) 22:41

В C# можно '\0' в коде. Как в VB?
И вы думаете, что вас оставят в живых после прочтения этого поста?

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение ANDLL » 08.03.2009 (Вс) 22:49

Char.MinValue
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Williams » 08.03.2009 (Вс) 23:24

Public Const MinValue As Char = Nothing
Member of System.Char


Однако работает (System.Text.Encoding.UTF8.GetString(messageBuff).Trim(Char.MinValue).

А почему System.Text.Encoding.UTF8.GetString(messageBuff).Trim(Nothing) не дает нужного результата?
И вы думаете, что вас оставят в живых после прочтения этого поста?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Nord777 » 08.03.2009 (Вс) 23:33

А почему System.Text.Encoding.UTF8.GetString(messageBuff).Trim(Nothing) не дает нужного результата?

Потому что первая строка преобразуется компилятором в это:
Код: Выделить всё
Dim s1 As String = Encoding.UTF8.GetString(b).Trim(New Char() { ChrW(0) })
А вторая нет
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение ANDLL » 09.03.2009 (Пн) 10:36

Trim(Char.MinValue) то же вроде не работает
Потому что первая строка преобразуется компилятором в это:
Why?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Nord777 » 09.03.2009 (Пн) 12:22

Why?
Ну наверно потому, что char это value type и не может быть nothing по определению.

Trim(Char.MinValue) то же вроде не работает
Проверил и VB и в C#. Работает.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение ANDLL » 09.03.2009 (Пн) 12:45

Ну наверно потому, что char это value type и не может быть nothing по определению.
Кто ж тебе такое сказал?
nothing это не то же самое что и null в C#
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Nord777 » 09.03.2009 (Пн) 12:57

Кто ж тебе такое сказал?
nothing это не то же самое что и null в C#
Я не совсем понял как трактовать эти два предложения. Как единое целое и отдельно? :roll:

Ты хочешь сказать, что char не value type? Или что?
Написав Nothing, я думал о VB.
По поводу различий между Nothing в VB и Null в C# спорить не буду, но я не понимаю, как это связать с моим высказыванием?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение ANDLL » 09.03.2009 (Пн) 13:06

value type и не может быть nothing по определению.
Относилось к этой части.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Nord777 » 09.03.2009 (Пн) 13:54

value type и не может быть nothing по определению.
Относилось к этой части.
Ну да. Все правильно. Что тут не так? Значение nothing применяется только к ссылочным типам.
А то, что VB дает написать Dim C As Char = Nothing и не выкидывает ошибку - так это всего лишь очередная вольность VB.
Компилятор все равно преобразует в Dim C As Char = ChrW(0)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение ANDLL » 09.03.2009 (Пн) 14:06

Компилятор преобразует присваивание константы в вызов функции?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Nord777 » 09.03.2009 (Пн) 14:31

Компилятор преобразует присваивание константы в вызов функции?
Сорри за неправильное выражение. Нет компилятор конечно же не преобразует в вызов функции. Так отображает Reflector(и впринципе правильно).
На самом деле(на уровне IL-кода) в стек заносится целое(integer) число 0.
Затем оно извлекается со стека и происходит инициализация переменной.
Код: Выделить всё
    .locals init (
        [0] char C,
    L_0000: nop
    L_0001: ldc.i4.0
    L_0002: stloc.0
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Эквивалент Microsoft.VisualBasic.Chr(0)

Сообщение Williams » 10.03.2009 (Вт) 13:22

Весьма интересно!
И вы думаете, что вас оставят в живых после прочтения этого поста?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 12

    TopList