Мова c # 8

У C # є символьний клас Char, заснований на класі System.Char і використовує двухбайтное кодування Unicode представлення символів. Для цього типу в мові визначені символьні константи - символьні літерали. Константу можна задавати:

- символом, укладеними в одинарні лапки;

- escape-послідовністю, яка задає код символу;

- Unicode-послідовністю, яка задає Unicode-код символу.

Три символьні змінні ініціалізовані константами, значення яких задані трьома різними способами. Мінлива ch оголошується в об'єктному стилі, використовуючи new і виклик конструктора класу. Тип char, як і всі типи C #, є класом. Цей клас успадковує властивості і методи класу Object і має велике число власних методів.

Явні або неявні перетворення між класами char і string відсутні, але, завдяки методу ToString, змінні типу char стандартним чином перетворюються в тип string. Як зазначалося вище, існують неявні перетворення типу char в цілочисельні типи, починаючи з типу ushort. Зворотні перетворення цілочисельних типів в тип char також існують, але вони вже явні.

В результаті роботи процедури TestChar рядок s, отримана зчепленням трьох символів, перетворених в рядки, має значення BZX, змінна ch дорівнює A, а її код - змінна code - 65.

Не раз відзначалося, що семантика привласнення справедлива при виклику методів і заміні формальних аргументів на фактичні. Наведемо дві процедури, які виконують взаємно-зворотні операції - отримання за кодом символу і отримання символу за його кодом:

Як бачите, в першій процедурі перетворення до цілого типу виконується неявно. У другій - перетворення явне. Заради універсальності вона злегка ускладнена. Формальний параметр має тип Object, що дозволяє передавати їй як аргумент код, заданий будь-яким цілочисельним типом. Платою за це є необхідність виконувати два явних перетворення.

Клас Char, як і всі класи в C #, успадковує властивості і методи батьківського класу Object. Але у нього є і власні методи і властивості, і їх чимало. Зведення цих методів приведена в таблиці 5.

Таблиця 5. Статичні методи і властивості класу Char

Властивості, які повертають символи з максимальним і мінімальним кодом. Повертаються символи не мають видимого образу

Більшість статичних методів перевантажені. Вони можуть застосовуватися як до окремого символу, так і до рядка, для якої вказується номер символу для застосування методу. Основну групу складають методи Is, вкрай корисні при розборі рядка. Наведемо приклади, в яких використовуються багато з перерахованих методів:

Результати консольного виведення, породженого виконанням методу, зображені на рис. 26.

Мова c # 8

Малюнок 26. Виклики статичних методів класу char

Крім статичних методів, у класу Char є і динамічні. Більшість з них - це методи батьківського класу Object, успадковані і перевизначені в класі Char. З власних динамічних методів варто відзначити метод CompareTo, що дозволяє проводити порівняння символів. Він відрізняється від методу Equal тим, що для незбіжних символів видає «відстань» між символами відповідно до їх впорядкованістю в кодуванні Unicode.

Результати порівняння зображені на рис. 27.

Мова c # 8

Малюнок 27. Порівняння символів

Аналізуючи ці результати, можна зрозуміти, що в кодуванні Unicode як латиниця, так і кирилиця щільно упаковані. Винятком є ​​літера Е - заголовна і мала - вони випадають з щільною кодування. Малі літери в кодуванні безпосередньо слідують за великими літерами. Відстань між алфавітами в кодуванні досить велика - російська буква А на 975 символів правіше в кодуванні, ніж відповідна буква в латинському алфавіті.

Схожі статті