Тип char
(синоним System.Char
) представляет юникод символы и занимает 2 байта. Литералы char указываются внутри одинарных кавычек:
1 | char c = 'A'; |
Управляющие последовательности (Escape sequences)
Символы, которые не могут быть переданы с помощью литералов, выражаются с помощью управляющих последовательностей:
Char | Значение | Юникод |
---|---|---|
\’ | Одиночная кавычка | 0x0027 |
\» | Двойная кавычка | 0x0022 |
\\ | Обратный слэш | 0x005C |
\0 | Null | 0x0000 |
\a | Alert | 0x0007 |
\b | Backspace | 0x0008 |
\f | Перевод страницы | 0x000C |
\n | Новая строка | 0x000A |
\r | Возврат каретки | 0x000D |
\t | Горизонтальный таб | 0x0009 |
\v | Вертикальный таб | 0x000B |
С помощью управляющей последовательности \u
(или \x
) можно передать любой юникод символ, указав сразу после последовательности его четырехзначный шестнадцатеричный код:
1 2 3 | char copyrightSymbol = '\u00A9'; char omegaSymbol = '\u03A9'; char newLine = '\u000A'; |
Преобразование char
Тип char
может быть автоматически (скрыто) преобразован в числовой тип, способный вместить бесзнаковый short
. Для остальных числовых типов требуется явное приведение.
System.Char
В System.Char
определен набор статических методов для работы с символами. Их можно вызвать через System.Char
или его псевдоним char
:
1 2 | Console.WriteLine (System.Char.ToUpper ('c')); // C Console.WriteLine (char.IsWhiteSpace ('\t')); // True |
Методы ToUpper
и ToLower
преобразуют символ в верхний и нижний регистр соответственно. Они учитывают локаль конечного пользователя, что может приводит к неявным ошибкам. Методы ToUpperInvariant
и ToLowerInvariant
делают тоже самое, но без учета локали пользователя.
Также класс System.Char
определяет ряд методов для категоризации символов:
IsLetter
— все буквы (UpperCaseLetter
,LowerCaseLetter
,TitleCaseLetter
,ModifierLetter
,OtherLetter
)IsUpper
— буквы в верхнем регистре (UpperCaseLetter
)IsLower
— буквы в нижнем регистре (LowerCaseLetter
)IsDigit
— все цифры (DecimalDigitNumber
)IsLetterOrDigit
— буквы и цифры (суммаIsLetter
иIsDigit
)IsNumber
— все цифры, дроби Unicode и числовые символы латинского набора (DecimalDigitNumber
,LetterNumber
,OtherNumber
)IsSeparator
— пробел и все символы разделителей Unicode (LineSeparator
,ParagraphSeparator
)IsWhiteSpace
— все разделители плюс\n
,\r
,\t
,\f
и\v
(LineSeparator
,ParagraphSeparator
)IsPunctuation
— знаки пунктуации (DashPunctuation
,ConnectorPunctuation
,InitialQuotePunctuation
,FinalQuotePunctuation
)IsSymbol
— большинство других печатных символов (MathSymbol
,ModifierSymbol
,OtherSymbol
)IsControl
— непечатные управляющие символы
Для категоризации символов также предназначен статический класс GetUnicodeCategory
, он возвращает перечисление UnicodeCategory
, члены которого приведены в скобках в списке выше.