Страница: 1 | 2 |
Вопрос: символ пустой строки
Добавлено: 07.11.06 21:57
Автор вопроса: Alexander
Ответы
Всего ответов: 21
Номер ответа: 16
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #16
Добавлено: 08.11.06 19:48
Ну так скажем не самое лучшее решение, но уже лучше чем On Error Resume Next
Номер ответа: 17
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #17
Добавлено: 08.11.06 19:56
Dim A As String
MessageBox.Show(CStr(A = "")
выдало True. Смотрю в Quick View'ере значение A. Пишет Nothing. Че за?
На самом деле здесь очень хитро сделано
Ведь реально при вызове String.Equals("", CStr(Nothing)) мы получим False... Что же происходит на самом деле и почему у нас пустая строка равна Nothing?
Код
Dim a As String = ""
Dim b As String = Nothing
Console.WriteLine(a = b)
End Sub
компилируется в следующий код (код получен рефактором)
Dim text1 As String = ""
Dim text2 As String = Nothing
Console.WriteLine((Operators.CompareString(text1, text2, False) = 0))
End Sub
Ну а в самом CompareString очевидно стоит ряд проверок, в том числе, если одна из переменных Nothing, а вторая - "", то объекты считаются равными и возвращается True.
Чтоб подтвердить свои догадки о работе этой функции, нужно рассмотреть исходный код сборки Microsoft.VisualBasic рефлектором, но к сожалению это будет нарушать условия лицензионного соглашения.
Номер ответа: 18
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #18
Добавлено: 08.11.06 20:01
Упс, не рефактором а рефлектором
Номер ответа: 19
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #19
Добавлено: 08.11.06 20:16
Она не сишарповая, она древняя как мир.
Номер ответа: 20
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #20
Добавлено: 08.11.06 23:03
2 Brand: за объяснение прям кланяюсь, не лень же было это все писать ) Спасиба!
Кстати получается, что в vb6 похожая система?
Номер ответа: 21
Автор ответа:
Alexander
Вопросов: 5
Ответов: 4
Профиль | | #21
Добавлено: 09.11.06 00:21
всем спасибо! стал умнее во много раз