Программирование >>  Обработка исключительных ситуаций 

1 ... 44 45 46 [ 47 ] 48 49 50 ... 142


Глава 5. Классы: основные понятия

одной величины ссылочного типа, это может отразиться на другой (в данном случае, если изменить объект через ссылку с, объект b также изменит свое значение).


Объекты

Рис. 5.2. Присваивание объектов

Аналогичная ситуация с операцией проверки на равенство. Величины значимого типа равны, если равны их значения. Величины ссылочного типа равны, если они ссылаются на одни и те же данные (на рисунке объекты b и с равны, но а не равно b даже при равенстве их значений или если они обе равны nullI).

Данные: поля и константы

Данные, содержащиеся в классе, могут быть переменными или константами и задаются в соответствии с правилами, рассмотренными в разделе Переменные (см. с. 38) и Именованные константы (см. с. 41). Переменные, описанные в классе, называются полями класса.

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

[ атрибуты ] [ спецификаторы ] [ const ] тип имя [ = начальное значение ]

До атрибутов мы доберемся еще не скоро, в главе 12, а возможные спецификаторы полей и констант перечислены в табл. 5.2. Для констант можно использовать только спецификаторы 1-6.

Таблица 5.2. Спецификаторы полей и констант класса № Спецификатор Описание

new Новое описание поля, скрывающее унаследованный элемент

класса

public Доступ к элементу не ограничен

protected Доступ только из данного и производных классов

internal Доступ только из данной сборки



а также преобразовать символ в верхний или нижний регистр и в число. Основные методы приведены в табл. 6.2.

Таблица 6.2. Основные методы класса System.Char

-sir

Метод

GetNumericValue

GetUnicodeCategory

IsControl

IsDigit

IsLetter

IsLetterOrDigit

IsLower

IsNumber

IsPunctuation IsSeparator Isllpper IsWhiteSpace

Parse

ToLower ToUpper

MaxValue, MinValue

Описание

Возвращает числовое значение символа, если он является цифрой, и -1 в противном случае

Возвращает категорию Unicode-символа1

Возвращает true, если символ является управляющим

Возвращает true, если символ является десятичной цифрой

Возвращает true, если символ является буквой

Возвращает true, если символ является буквой или цифрой

Возвращает true, если символ задан в нижнем регистре

Возвращает true, если символ является числом (десятичным или шестнадцатеричным)

Возвращает true, если символ является знаком препинания

Возвращает true, если символ является разделителем

Возвращает true, если символ записан в верхнем регистре

Возвращает true, если символ является пробельным (пробел, перевод строки и возврат каретки)

Преобразует строку в символ (строка должна состоять из одного символа)

Преобразует символ в нижний регистр Преобразует символ в верхний регистр

Возвращают символы с максимальным и минимальным кодами (эти символы не имеют видимого представления)

В листинге 6.6 продемонстрировано использование этих методов.

Листинг 6.6. Использование методов класса System.Char using System;

namespace ConsoleApplicationi { class Classl

{ static void MainO

char b =

0x63 , d = Ou0032;

Bee Unicode-символы разделены на категории, например, десятичные цифры (Decimal-DigitNumber), римские цифры (LetterNumber), разделители строк (LineSeparator), буквы в нижнем регистре (LowercaseLetter) и т. д.



catch

Console.WriteLine( Возникло исключение return;

В операторе 1 описаны три символьных переменных. Они инициализируются символьными литералами в различных формах представления. Далее выполняются вывод и преобразование символов.

В цикле 2 анализируется вводимый с клавиатуры символ. Можно вводить и управляющие символы, используя сочетание клавиши Ctrl с латинскими буквами. При вводе использован метод Parse, преобразующий строку, которая должна содержать единственный символ, в символ типа char. Поскольку вводится строка, ввод каждого символа следует завершать нажатием клавиши Enter. Цикл выполняется, пока пользователь не введет символ q.

Вывод символа сопровождается его кодом в десятичном виде1. Для вывода кода используется явное преобразование к целому типу. Явное преобразование из символов в строки и обратно в С# не существует, неявным же образом любой объект, в том числе и символ, может быть преобразован в строку2, например:

string s = к + о + О; результат - строка кот

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

1 Обратите внимание на коды русских букв: как далеко от латинских они оказались в кодировке Unicode!

Console.WriteLine( {0} {1} {2} . b. с. d ); Console.WriteLine( {0} {1} {2} ,

char.ToLower(b). char.Tol)pper(c), char.GetNumericValue(d) );

char a;

do 2

Console.Write( Введите символ: ); a = char.Parse( Console.ReadLine() ); Console.WriteLine( Введен символ {0}. его код - {1} . а. Сint)а );

if (char.IsLetter(a)) Console.WriteLine( Буква );

if (char. IsUpper(a)) Console.WriteLine( Bepxий peг. ); if (char.IsLower(a)) Console.WriteLine( Нижний peг. ); if (char.IsControl (a)) Console.WriteLine( Упpaвляющий );

if (char.IsNumber(a)) Console.WriteLine( Число );

if (char.IsPunctuation(a)) Console.WriteLine( Paздeлитeль ); } while (a != q) :

Об этом рассказывалось в разделе Простейший ввод-вывод (см. с. 59).



1 ... 44 45 46 [ 47 ] 48 49 50 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика