Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
String
Тип данных представляет ряд символов (каждый из которых представляет экземпляр Char
типа данных). В этом разделе представлены основные понятия строк в Visual Basic.
Строковые переменные
Экземпляру строки можно присвоить литеральное значение, представляющее собой ряд символов. Рассмотрим пример.
Dim MyString As String
MyString = "This is an example of the String data type"
Переменная String
также может принимать любое выражение, которое оценивается строкой. Ниже приведены примеры.
Dim OneString As String
Dim TwoString As String
OneString = "one, two, three, four, five"
' Evaluates to "two".
TwoString = OneString.Substring(5, 3)
OneString = "1"
' Evaluates to "11".
TwoString = OneString & "1"
Любой литерал, назначенный переменной String
, должен быть заключен в кавычки (""). Это означает, что кавычка в строке не может быть представлена кавычками. Например, следующий код вызывает ошибку компилятора:
Dim myString As String
' This line would cause an error.
' myString = "He said, "Look at this example!""
Этот код вызывает ошибку, так как компилятор завершает строку после второй кавычки, а оставшаяся часть строки интерпретируется как код. Чтобы решить эту проблему, Visual Basic интерпретирует две двойные кавычки в строке как одну кавычку в строке. В следующем примере показан правильный способ включения кавычки в строку:
' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""
В предыдущем примере две кавычки, предшествующие слову Look
, становятся одной кавычкой в строке. Три кавычки в конце строки представляют одну кавычку в строке и символ завершения строки.
Строковые литералы могут содержать несколько строк:
Dim x = "hello
world"
Результирующая строка содержит последовательности перехода на новую строку, которые вы использовали в строковом литерале (vbcr, vbcrlf и т. д.). Вам больше не нужно использовать старое решение:
Dim x = <xml><![CDATA[Hello
World]]></xml>.Value
Символы в строках
Строка может рассматриваться как ряд значений Char
, а String
тип имеет встроенные функции, которые позволяют выполнять множество манипуляций в строке, которая напоминает манипуляции, разрешенные массивами. Как и все массивы в .NET Framework, это отсчитываемые от нуля массивы. Вы можете ссылаться на определенный символ в строке через Chars
свойство, которое предоставляет способ доступа к символу по позиции, в которой она отображается в строке. Рассмотрим пример.
Dim myString As String = "ABCDE"
Dim myChar As Char
' The value of myChar is "D".
myChar = myString.Chars(3)
В приведенном выше примере свойство Chars
строки возвращает четвертый символ в строке, то есть D
, и присваивает его myChar
. Можно также получить длину определенной строки через Length
свойство. Если необходимо выполнить несколько операций с типом массива в строке, его можно преобразовать в массив Char
экземпляров с помощью ToCharArray
функции строки. Рассмотрим пример.
Dim myString As String = "abcdefghijklmnop"
Dim myArray As Char() = myString.ToCharArray
Переменная myArray
теперь содержит массив значений Char
, каждый из которых представляет символ из myString
.
Неизменяемость строк
Строка неизменяема, что означает, что его значение невозможно изменить после создания. Однако это не препятствует назначению нескольких значений строковой переменной. Рассмотрим следующий пример:
Dim myString As String = "This string is immutable"
myString = "Or is it?"
Здесь создается строковая переменная, заданная значение, а затем ее значение изменяется.
В частности, в первой строке создается экземпляр типа String
и присваивается значение This string is immutable
. Во второй строке примера создается новый экземпляр и присваивается значение Or is it?
, а строковая переменная удаляет ссылку на первый экземпляр и сохраняет ссылку на новый экземпляр.
В отличие от других встроенных типов данных, String
является ссылочным типом. Если переменная ссылочного типа передается в качестве аргумента функции или подпрограмме, ссылка на адрес памяти, в котором хранятся данные, передается вместо фактического значения строки. Таким образом, в предыдущем примере имя переменной остается неизменным, но указывает на новый и другой экземпляр String
класса, который содержит новое значение.