В C# есть символьный класс Char, основанный на классе System.Char и использующий двухбайтную кодировку Unicode представления символов. Для этого типа в языке определены символьные константы - символьные литералы. Константу можно задавать:
Вот несколько примеров объявления символьных переменных и работы с ними:
public void TestChar() { char ch1='A', ch2 ='\x5A', ch3='\u0058'; char ch = new Char(); int code; string s; ch = ch1; //преобразование символьного типа в тип int code = ch; ch1=(char) (code +1); //преобразование символьного типа в строку //s = ch; s = ch1.ToString()+ch2.ToString()+ch3.ToString(); Console.WriteLine("s= {0}, ch= {1}, code = {2}", s, ch, code); }//TestChar
Три символьные переменные инициализированы константами, значения которых заданы тремя разными способами. Переменная ch объявляется в объектном стиле, используя new и вызов конструктора класса. Тип char, как и все типы C#, является классом. Этот класс наследует свойства и методы класса Object и имеет большое число собственных методов.
Существуют ли преобразования между классом char и другими классами? Явные или неявные преобразования между классами char и string отсутствуют, но, благодаря методу ToString, переменные типа char стандартным образом преобразуются в тип string. Как отмечалось в лекции 3, существуют неявные преобразования типа char в целочисленные типы, начиная с типа ushort. Обратные преобразования целочисленных типов в тип char также существуют, но они уже явные.
В результате работы процедуры TestChar строка s, полученная сцеплением трех символов, преобразованных в строки, имеет значение BZX, переменная ch равна A, а ее код - переменная code - 65.
Не раз отмечалось, что семантика присваивания справедлива при вызове методов и замене формальных аргументов на фактические. Приведу две процедуры, выполняющие взаимно-обратные операции - получение по коду символа и получение символа по его коду:
public int SayCode(char sym) { return (sym); }//SayCode
| GetNumericValue | Возвращает численное значение символа, если он является цифрой, и (-1) в противном случае |
| GetUnicodeCategory | Все символы разделены на категории. Метод возвращает Unicode категорию символа. Ниже приведен пример |
| IsControl | Возвращает true, если символ является управляющим |
| IsDigit | Возвращает true, если символ является десятичной цифрой |
| IsLetter | Возвращает true, если символ является буквой |
| IsLetterOrDigit | Возвращает true, если символ является буквой или цифрой |
| IsLower | Возвращает true, если символ задан в нижнем регистре |
| IsNumber | Возвращает true, если символ является числом (десятичной или шестнадцатиричной цифрой) |
| IsPunctuation | Возвращает true, если символ является знаком препинания |
| IsSeparator | Возвращает true, если символ является разделителем |
| IsSurrogate | Некоторые символы Unicode с кодом в интервале [0x1000, 0x10FFF] представляются двумя 16-битными "суррогатными" символами. Метод возвращает true, если символ является суррогатным |
| IsUpper | Возвращает true, если символ задан в верхнем регистре |
| IsWhiteSpace | Возвращает true, если символ является "белым пробелом". К белым пробелам, помимо пробела, относятся и другие символы, например, символ конца строки и символ перевода каретки |
| Parse | Преобразует строку в символ. Естественно, строка должна состоять из одного символа, иначе возникнет ошибка |
| ToLower | Приводит символ к нижнему регистру |
| ToUpper | Приводит символ к верхнему регистру |
| MaxValue, MinValue | Свойства, возвращающие символы с максимальным и минимальным кодом. Возвращаемые символы не имеют видимого образа |

