Подтвердить что ты не робот

CStr() Str().ToString()

Я просто хочу знать, что именно разница между функциями CStr() и Str(), а также .ToString()? С приведенным ниже кодом, какая разница между тремя?

Label1.Text = CStr(Int(Rnd() * 10))

и

Label1.Text = Str(Int(Rnd() * 10))

и

Label1.Text = Int(Rnd() * 10).ToString

Когда я использовал это условие

If Label1.Text = "7" Then
     'Some code here
End If

... функция Str() здесь не работает. Какая разница? спасибо заранее:))

4b9b3361

Ответ 1

ToString вызовет функцию .ToString() на конкретном экземпляре. На практике это означает, что он будет генерировать исключение, если объект в вопрос Nothing. Однако вы можете реализовать .ToString() в своих собственных классов, чтобы получить полезное строковое представление вашего объекта, тогда как CType/CStr работает только со встроенными классами и интерфейсами.

CStr и CType (выражение, String) эквивалентны (я не где другой плакат понял, что CStr быстрее). Но они на самом деле не являются функциями, они - директивы компилятора, которые будут издавать очень другой код в зависимости от объявления выражения. В большинстве случаев, эти директивы называют кучу внутреннего кода VB, который пытается получить разумную строку из выражения.

DirectCast (выражение, String) предполагает, что выражение в вопрос действительно есть String и просто отбрасывает его. Это самый быстрый из всех эти опции, но будет генерировать исключение, если выражение есть что-либо кроме a String.

Ответ 2

В качестве дополнения к среде VBA/VB6, где у нас нет ToString():

  • Str() не осознает международного представительства. Десятичный разделитель всегда является точкой (.).

    Как уже упоминалось выше, он префикс результирующей строки с пробелом в случае положительных значений.

  • Существует также Str$(). Разница в Str() - это возвращаемый тип:

    Str() возвращает вариант строки типа, Str$() возвращает строку.

    И Str$() немного быстрее, чем Str().

  • CStr() напротив понимает международное представительство. Десятичный разделитель зависит от международных настроек Windows.

    Никакой дополнительный префикс для положительных значений не будет выполнен.

Итак, если вам нужно преобразовать тип значения в строку и обеспечить точку в виде разделителя с десятичной запятой и без префикса пустой, используйте этот синтаксис:

Dim d As Double
d = 123.456

Dim s As String
s = Trim(Str$(d))

Ответ 3

Я не знаю о ToString(), и я не знаю о VB.NET

Но в VB6 (Visual Basic 6):

Оба Cstr() и Str() преобразуют значения в строку. но Cstr() лучше, потому что:

Str(): После преобразования в строку он добавляет 1 пробел до положительных чисел. например: Str (22) > "22"

Cstr(): После преобразования в строку он никогда не добавляет лишнее пространство. Для лучшего результата используйте его с Trim() - Trim (Cstr (Variable))

Ответ 4

Хотя это не проблема в коде в вопросе, важно отметить, что Str() преобразует только числовые выражения в строку, дает ошибку в других случаях, поэтому не используйте его для преобразования значений ячейки.