ПОНЯТНО О Visual Basic NET

Знакомимся со строками


Создайте двухкнопочный проект с такой программой:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim a As Integer

        a = 98

        Debug.WriteLine(a)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim b As String

        b = "Привет всем!"

        Debug.WriteLine(b)

    End Sub

Сравним две процедуры.

Объявление Dim a As Integer говорит о том, что переменная a обязана иметь числовое значение, и поэтому в первой процедуре оператор  a=98  записывает в ячейку a число 98.



Объявление Dim b As String говорит о том, что переменная b обязана иметь строковое (текстовое) значение. Это значит, что ее значением будет не число, а произвольная цепочка символов, например,       Привет всем!     или    рпН2Н(+*fD6:u   . Оператор b ="Привет всем!" записывает в ячейку b строку  Привет всем! . Оператор Debug.WriteLine(b), поскольку он обязан всегда выводить на экран содержимое ячейки b, выведет на экран текст  Привет всем!

Обратите внимание, что в окне кода текст должен браться в двойные кавычки, а в памяти он хранится без кавычек и на экран выводится без кавычек. И когда вы его вводите в текстовое поле или в InputBox, то тоже вводите без кавычек.

Информация в ячейке памяти под строковую переменную может в процессе выполнения программы меняться точно так же, как и в ячейке для числовой переменной. Например, при выполнении процедуры

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim a As String

        a = "Минуточку!" : Debug.WriteLine(a) : a = "Здравствуйте!" : a = "До свидания!" : Debug.WriteLine(a)

    End Sub

в ячейке a будут по очереди появляться строки

Минуточку!              Здравствуйте!             До свидания!

а на экран будут выведены строки:

Минуточку!

До свидания!


Размеры ячейки под строковую переменную не фиксированы, они прямо зависят от размеров строки.

Операция &. Над строками, так же как и над числами, можно выполнять некоторые операции. Простейшая операция обозначается символом & и мы с ней знакомы – она просто соединяет строки в одну. Рассмотрим программу:

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Dim S As String = "беда"

        Dim T As String

        T = "По" & S

        Debug.WriteLine(T)

        Debug.WriteLine(T & T & T)

        Debug.WriteLine(T + T + T)

    End Sub

Вот что она печатает:

Победа

ПобедаПобедаПобеда

ПобедаПобедаПобеда

Вы видите, что операция +

по отношению к строкам равнозначна операции &.

Строковые выражения и литералы. Встретившиеся нам выражения   

"По"  &  S

T & T & T

"Объем = "   &   Format(V, "0.###")

и другие являются ни чем иным, как строковыми выражениями. По той простой причине, что в них производятся действия, результатом которых является строка. Конкретные взятые в двойные кавычки строки текста, которые мы видим в окне кода, будем называть строковыми литералами. Так, в приведенных выше строковых выражениях мы видим литералы  "По",  "Объем = ", "До свидания!"  и другие. Строковые же выражения, как и любые другие выражения, не заключаются в двойные кавычки. В них заключаем только конкретные строковые литералы.

Операция & по отношению к числам. Если операцию & применить к числам, то она их «насильно» преобразует в строки и соединит, как привыкла, в одну строку. Рассмотрим программу:

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        Dim a As Integer = 1234

        Debug.WriteLine("Здесь было " & 76 & a & a & 908 & " зайцев")

    End Sub

Вот что она печатает:



Здесь было 7612341234908 зайцев

Разумеется, строка цифр  7612341234908  это просто строка символов и не имеет никакого отношения к реальному числу. Это просто бывшие числа, ставшие строками и затем соединенные вместе.

Задание 14.         

Определите без компьютера, что напечатает следующая программа?:

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

        Dim a As String = "Цикл"

        a = a & a

        Debug.WriteLine(a)

        a = a & a

        Debug.WriteLine(a & a & "Конец цикла")

    End Sub

Пример. Строковую переменную можно задавать не только оператором присваивания, но и функцией InputBox:

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click

        Dim a As String

        a = InputBox("Введите какое-нибудь слово")

        Label1.Text = "Вы ввели слово " & a

    End Sub

Пусть после нажатия на кнопку вы ввели слово Вперед. Вот результат в метке:

Вы ввели слово Вперед

Обратите внимание на пробел между буквой «о» и кавычкой в литерале "Вы ввели слово  ".  Пробел нужен для того, чтобы слова при выводе не сливались. Если бы его не было, результат был бы такой:

Вы ввели словоВперед


Содержание раздела