Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
А касательно vb2005:

Dim A As String
MessageBox.Show(CStr(A = "";))

выдало True. Смотрю в Quick View'ере значение A. Пишет Nothing. Че за?

На самом деле здесь очень хитро сделано :)
Ведь реально при вызове String.Equals("", CStr(Nothing)) мы получим False... Что же происходит на самом деле и почему у нас пустая строка равна Nothing?

Код
    Sub Main()
        Dim a As String = ""
        Dim b As String = Nothing
        Console.WriteLine(a = b)
    End Sub

компилируется в следующий код (код получен рефактором)

    Public Shared Sub Main()
        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-сайт: sharpc.livejournal.com
 Профиль | | #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
всем спасибо! стал умнее во много раз:)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам