Урок 14. Тип данных String C#


Все уроки по C# расположены здесь.

В этой статье мы начнем изучение строкового типа данных. Это, возможно, самый важный собственный тип данных в языке программирования C#. Используя строки, мы можем выполнять обработку текстовой информации.

Строки

В C# строковой тип данных (String) используется для определения ряда символов Unicode. Серия может быть как из нуля символов (пустая строка) или гораздо больше. Теоретический максимальный размер составляет несколько миллиардов символов. Однако это может быть недостижимо, так как операционная система может не предоставить достаточно памяти для хранения таких строк.

Строки - это объекты

Переменные типы в c# могут быть разделены на две группы. Эти типы значений и ссылочные типы. Все типы данных, которые были рассмотрены до сих пор в нашем учебнике - то были типы значений, или структур. Строковый тип данных - это не структура, это класс. Классы отличаются от структур. Они используются в объектно-ориентированном программировании – я писал уже о нем, но напишу и здесь некоторые ключевые моменты о классах, которые вы должны знать.

Все строки являются объектами типа string. Все объекты могут иметь значение null, указывающее, что они не определены. Поэтому любой объект string является nullable. В отличие от типов данных nullable numeric и character, описанных ранее в этом руководстве, это относится ко всем версиям платформы .NET framework.

Второй важный факт по объектам заключается в том, что они являются ссылочными типами. Это означает, что данные в объекте хранятся где-то в памяти компьютера, а переменная содержит указатель на эту память. Это означает, что два объекта одного типа могут указывать на одну и ту же область памяти, и в этом случае два объекта на самом деле совпадают; изменение на один отражается в другом. Это станет более важным, когда мы будем рассматривать создание методов позже в этом учебнике C#.

Неизменность

Важным свойством строк в том, что они доступны только для чтения или неизменяемы. После создания строки ее содержимое не может быть изменено. Это может быть сюрпризом даже для опытных разработчиков C#, так как строки могут быть легко созданы и изменены. Однако при обновлении строки .NET framework фактически удаляет оригинал и создает новую строку. Для строк, которые изменяются нечасто, это позволяет их более эффективно обрабатывать. Часто модифицируемые строки могут быстро стать неэффективными; в этом случае лучше использовать другой класс StringBuilder.

Строковые литералы

Значение строки присваивается с помощью оператора присваивания (=). Как и в случае с символьным типом данных, при назначении литерального значения необходимо использовать символы-разделители для идентификации начальной и конечной информации. Кавычки (") используются для строковых литералов.

string helloString = "Hello world";
Как указывалось ранее, строки являются объектами и поэтому могут содержать null. Значение null может быть присвоено аналогичным образом, как и при использовании nullable в числовых типов данных.

string nullString = null;
Строка null указывает, что переменная не определена. Часто требуется сохранить пустую строку. Это отличается от null, поскольку значение определено, хотя оно не содержит символов. Существует два способа присвоения пустого строкового значения. Вы можете использовать пару кавычек или String.Empty значение. Последнее иногда предпочтительнее, так как некоторые разработчики считают его более читаемым.

string emptyString;
 
emptyString = "";               
emptyString = String.Empty;     
Строковые конструкторы

Все классы содержат один или несколько конструкторов. Конструктор - это специальный метод, который выполняется при создании нового объекта этого класса. Конструкторы готовят значения объекта и получают все необходимые ресурсы, иногда используя предоставленные аргументы.

Класс string определяет несколько конструкторов. Большинство из них выходят за рамки этого учебника. Один интересный конструктор позволяет указать символ и целое число, чтобы создать строку, содержащую один символ, повторяемый много раз. Этот конструктор используется в следующем примере. Обратите внимание на использование нового ключевого слова, которое используется, когда объекты создаются таким образом:

string repeating = new string('.', 15);   // repeating = "..............."
Экранирующий символ

Есть некоторые символы, которые не могут быть легко включены в строковый литерал. Например, кавычка не может быть включена напрямую, так как она означает конец литерала. Следующий код не компилируется.

string invalid = "This is a "string".";
Console.WriteLine(invalid);
Чтобы включить кавычки необходим специальный код или последовательность Escape-символов. Последовательности Escape-символов предоставляются в виде обратной косой черты ( \ ), за которой следует один или несколько символов, определяющих добавляемую информацию. Для кавычек escape-код является обратной косой чертой и кавычкой (\"). Это показано ниже

string valid = "This is a \"string\"."; Console.WriteLine(valid); // Outputs: This is a "string"

Аналогичная проблема существует для символьных литералов, где требуется символ апострофа. Как и следовало ожидать, можно использовать обратную косую черту и апостроф (\').

char apostrophe = '\'';
Буквальные (дословные) строковые литералы

C# поддерживает второй тип строкового литерала, который известен как дословный (буквальный) строковый литерал. Он не требует использования escape-символов для определения специальных символов. Вместо этого любая информация в исходном коде, включая новые линии, включается в строку. Определение дословного литерала - префикс строки с символом @ перед открывающей кавычкой. Единственный символ, который требует другого действия, - это сама кавычка, которая должна быть введена дважды, чтобы указать один символ.

string literal = @"Literal strings can include backslash (\) characters.";
 
string quoted = @"This is a ""string"".";
 
string multiline = @"This is line one.
This is line two.";
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегистатьи IT, Уроки по си шарп, си шарп




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 46. Константы и перечисления C#
Анализ алгоритмов: введение
Установка форума на движке MyBB