2

О string и char. Синтаксис C#

Серия Введение в основы программирования.

Из этой лекции вы узнаете о ссылочном типе данных — string и примитивном — char.

Переменные с ссылочным типом данных string — это переменные, предназначенные для хранения значений в виде строк. Строкой считается любое значение, с форматом представления в виде любых символов заключенных между двойными кавычками, даже если это один символ.

Объявление и инициализация переменной с типом данных string ничем ни отличается от тех же операций с другими типами данных.

Так выглядит инициализация переменной с строковым значением

static void Main(string[] args)

{

string text = "Bill";

}

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

Для хранения строгого значения используется следующая схема. Строковое значение разбивается на отдельные символы, в том числе, знаки препинания, пробелы и т.д., и каждый символ преобразуется в число. После преобразования получается массив из чисел, которые записываются в специальную область памяти — куча. Соответствие символа и его десятичного, числового представления указаны в таблице символов ASCII(1 байт) или UNICODE(2 байта).

Для доступа к строковому значению, в стеке, создается объект-ссылка с именем, в котором указано, где, в куче, находятся символы.

Ссылка приведена для визуального оформления

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

Строковое значение «Bill», в памяти компьютера будет представлено следующим набором числовых значений — 66 105 108 108.

Для доступа к отдельному элементу указывается имя значения и соответствующий индекс, в формате записи — имя переменной [индекс элемента]

static void Main(string[] args)

{

string text = "Bill";

Console.WriteLine($"Имя строка - {text[0]},{text[1]},{text[2]},{text[3]}");

}

Здесь, для вывода строки применена интерполяции.

Элемент строкового значения хранится в виде значения с символьным типом данных — char. Таким образом, значение с типом данных string — это массив элементов с типом данных char.

static void Main(string[] args)

{

string text = "Bill";

Console.WriteLine("Тип данных: " + text[0].GetTypeCode());

}

Здесь, метод GetTypeCode(), указывает на тип данных значения, хранимого в элементе с индексом 0.

Символьный тип —char, является очень интересным типом данных. Значения этого типа данных хранится как числовое значение, но на экран выводится — его графическое представление. Другими словами, для компьютера значение типа данных —char, является числом, но пользователь на экране видит символ.  Это некий мостик, между строковыми и числовыми значениями.

Значения с типом данных char относятся к примитивным типам данных и хранятся в стеке. Формат записи —  единственный символ, обрамленный одинарными кавычками. Размер выделяемой памяти составляет один или два байта.

Инициализация переменной

static void Main(string[] args)

{

char symbolA = 'A';

}

Соответствие символа и его числового значения

static void Main(string[] args)

{

char symbolA = 'A';

Console.WriteLine("Переменная символа 'A' = " + symbolA);

int number = symbolA;

Console.WriteLine("Числовое значение переменной symbolA = " + number);

}

При изменении числового значение меняется символ.

static void Main(string[] args)

{

char symbolA = 'A';

Console.WriteLine("Переменная символа 'A' = " + symbolA);

int number = symbolA + 1;

char value = (char)number;

Console.WriteLine("Символ 'A' + 1 = " + value);

}

Здесь, переменная number инициализирована числом, соответствующим символу 'A' — 65, добавим к этому значению единицу. Результатом такой операции станет число 66, которое соответствует символу 'B'. Для преобразования числового значения в значение с типом данных char используется явное привидение типов

Для обработки строкового значения зачастую необходимо знать количество содержащихся в нем элементов, размер значения. Для этого используется свойство — Length.

static void Main(string[] args)

{

string text = "Bill";

Console.WriteLine($"Размер значения - {text.Length}");

}

Зная, что строковое значение — массив значений символьного типа, а также размер массива, можно производить некоторые действия над строковым значением. В C# такие действия ограничены, но, к примеру в языке С++, можно заменять один символ другим. Возможности обработка строки, на различных языках программирования существенно отличается, иначе зачем столько языков программирования.

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

Примем, что строковое значение состоит из одного предложение, заканчивающееся на один из вышеперечисленных знаков.

Последний символ предложения хранится в последнем элементе значения. Для получения доступа к этому элементу нам необходимо знать его индекс. В этом нам поможет свойство Length, в виде конструкции «Length-1». Дело в том, что нумерация в Length начинается не с нуля, как у индексов элементов, а с единицы. Дабы привести в соответствие числовые ряды, Length уменьшается на единицу.

Полученный индекс последнего элемента запишем в отдельную переменную «int idx = text.Length-1;». Таким образом в операции отношения сравнивается последний элемент строкового значения с символами окончания предложения.

static void Main(string[] args)

{

string text = "Hello, world!";

int idx = text.Length - 1;

if (text[idx] == '.')

{

Console.WriteLine("Предложение повествовательное");

}

if (text[idx] == '!')

{

Console.WriteLine("Предложение побудительное");

}

if (text[idx] == '?')

{

Console.WriteLine("Предложение вопросительное");

}

}

В заключении.

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

Значения с типом данных char, представляет собой значение в графическом виде, отображающее символ, но хранимое как число. Символы и соответствующие им числовые значения приведены в таблице ASCII. Формат записи — единственный символ, заключенный в одинарные кавычки.

На этом занятие закончено.

Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru

Удачи в выполнении практических заданий!

0
Автор поста оценил этот комментарий

Спасибо за комментарии. Очень странно, когда больше 2 тысяч просмотров и не одного комментария. Заставляет задуматься, правильный ли счетчик просмотров.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества