Помощь в написании студенческих работ
Антистрессовый сервис

Специфические методы и поля простых типов

РефератПомощь в написанииУзнать стоимостьмоей работы

В программе строки (строковые константы-литералы), использованные в качестве аргументов метода Parse (), содержат ведущие и завершающие пробелы, а также незначащие левые нули. Такие отклонения в строковых (символьных) представлениях чисел допустимы. Следует обратить внимание на запятую, отделяющую дробную часть числа от целой в символьном представлении. Это требование локализации, предполагающей… Читать ещё >

Специфические методы и поля простых типов (реферат, курсовая, диплом, контрольная)

Кроме методов, унаследованных от общего базового класса object, каждый простой тип имеет набор собственных методов и свойств. Рассмотрим те из них, которые являются достаточно общими и чаще всего применяются в программах.

Метод, без которого трудно обойтись в реальных программах, это метод Parse (), назначение которого — преобразовать текстовую строку в числовое или логическое значение. Полезность этого метода связана с тем фактом, что при общении с программой пользователь обычно вводит числовые значения (например, с клавиатуры) в виде последовательности символов, а в программе они должны быть представлены в виде машинных кодов соответствующих чисел.

Задача перекодирования символьной строки в код числового значения, во-первых, трудоемка для программирования, а во-вторых, не каждая последовательность символов может быть преобразована в числовое значение. Метод ParseQ, определенный в каждом классе арифметических типов (Int32, Double…), позволяет автоматизировать решение задачи распознавания «правильных» записей числовых значений и задачи их преобразования в числа. Метод Parse () убирает из строки лишние пробелы слева и справа и незначащие левые нули.

Следующая программа иллюстрирует применение метода к строковым литералам, представляющим числовые значения:

// 0502.cs — метод Parse () using System; class Program {.

static void MainQ.

{

long row = long. Parse («18»)j.

long col = System.Int64.Parse («123 «);

Console.WriteLine («row + col = «+ (row + col)); double x = double. Parse («-000,31 4159e+l»);

Console.WriteLine («x = «+ x);

Console.WriteLine («Double.Parse (» 0011 «) = «+.

Double.Parse («0011 «));

} }

Обратите внимание, что метод Parse () является методом класса (методом статическим) и поэтому в его вызове нужно указать имя того класса, из которого он взят. Имя класса может быть или системным (в нашей программе System.Int64 и System. Double), или принятым в языке C# (long, double).

Результат выполнения программы:

row + col = 141 х = -3,14 159.

Double.Parse («0011 «) = 11.

В программе строки (строковые константы-литералы), использованные в качестве аргументов метода Parse (), содержат ведущие и завершающие пробелы, а также незначащие левые нули. Такие отклонения в строковых (символьных) представлениях чисел допустимы. Следует обратить внимание на запятую, отделяющую дробную часть числа от целой в символьном представлении. Это требование локализации, предполагающей, что в России используются не американские, а европейские правила записи вещественных чисел.

Примечание. В текстах программ на C# для отделения целой части вещественного числа от ее дробной части используется точка. При вводе и выводе, т. е. во внешнем символьном представлении вещественных чисел, знак, разделяющий дробную и целую части, определяется локализацией исполняющей системы. Локализация может быть изменена настройкой.

При неверной записи числового или логического значения в аргументе метода Parse () генерируется исключение с названием System. FormatException. Так как мы еще не рассматривали механизм исключений, то примеры неудачных попыток применять метод Parse () с такими ошибками в записи чисел приводить преждевременно.

В .NET Framework 2.0 появился еще один метод для преобразования строкового представления значения (арифметического, символьного, логического) в значение соответствующего простого типа. Этот метод перегружен и его варианты есть в разных классах. Например, в класс целых чисел типа int входит вариант этого метода с таким заголовком:

static public bool TryParse (string, out int);

Метод анализирует строку, представленную первым параметром, и если ее удается преобразовать в целочисленное значение, то это значение передается в точку вызова с помощью аргумента, заменяющего второй параметр. Кроме того, метод имеет возвращаемое значение логического типа. При успешном преобразовании возвращается значение true. При неверном представлении в строке-аргументе значения соответствующего типа (того, для которого метод вызван) метод возвращает значение false.

Принципиальное отличие метода TryParseO от метода Parse () — отсутствие генерации исключений при неверных преобразованиях. Поэтому его можно использовать, не применяя механизма обработки исключений.

Чтобы привести пример, в котором будут показаны некоторые возможности метода TryParseO, нам придется несколько расширить тот арсенал средств, которыми мы до сих пор пользуемся в примерах программ.

Начнем с модификатора out, который используется в спецификации второго параметра метода TryParseO. Таким модификатором снабжается параметр, с помощью которого метод возвращает в точку вызова некоторое значение. Аргумент, который будет подставлен на место этого параметра, должен быть пригоден для получения возвращаемого значения, и всегда снабжается в обращении к методу модификатором out. Таким аргументом может быть имя переменной.

Наиболее часто метод TryParseO применяется для анализа и преобразования входных данных, вводимых пользователем с клавиатуры. Как мы уже показывали на примерах, последовательность символов, набранную на клавиатуре, можно «прочитать» с помощью метода.

static public string Console. ReadLineQ;

Метод принадлежит классу Console. У метода ReadLineO параметры отсутствуют, он возвращает строковое значение.

Метод «срабатывает» как только пользователь нажимает на клавиатуре клавишу ENTER. В точку вызова метод ReadLine () возвращает строку символов, набранную на клавиатуре. Обращение к методу ReadLineO можно использовать в качестве первого аргумента метода TryParseO. Вторым аргументом должна быть переменная того типа, значение которого мы планируем «прочитать» из входной строки.

Теперь, договорившись о новых средствах, приведем программу, которая читает из входного потока консоли (от клавиатуры) последовательность (строку) символов и анализирует ее следующим образом. Если введено логическое значение (true или false), то для true нужно вывести символ '1', а для false — символ '0'. Если введенная последовательность символов не является изображением логического значения, то вывести знак'?'.

// 0503.cs — Метод TryParse (). using System; class Program {.

static void MainQ.

{

bool bb;

char res;

Console.Write («Введите логическое значение: «);

res = (bool.TryParse (Console.ReadLine (), out bb) == true)? bb? '1': '0': '?';

Console.WriteLine («res ===> «+ res);

}

>

В программе используется статический метод TryParseO класса bool. Первый аргумент — обращение к методу ReadLineO класса Console. Второй аргумент — переменная булевого типа с именем bb. Обращение к TryParseO — это первый операнд тернарной условной операции ?:. Если возвращаемое методом значение равно true, то переменная bb получила одно из двух логических значений. В зависимости от конкретного значения bb символьной переменной res присваивается Т или '0'. Если метод bool. TryParse () возвращает значение false, то переменная res получает значение '?'.

Следующие результаты трех выполнений программы дополняют приведенные объяснения:

Введите логическое значение: true res ===> 1.

Введите логическое значение: false res ===> 0.

Введите логическое значение: ncTHHa res ===>?

В каждый из типов, представляющих в C# простые (базовые) типы, входят несколько открытых статических константных полей, позволяющих оценить предельные значения переменных и констант соответствующего типа.

В целых типах таких полей два:

  • • MaxValue — максимальное допустимое значение (константа);
  • • MinValue — минимальное допустимое значение (константа).

В вещественных типах, кроме названных полей, присутствуют следующие статические константные поля:

  • • Epsilon — наименьшее отличное от нуля числовое значение, которое может принимать переменная заданного типа;
  • • NaN — представление значения, которое не является числом, например, результат выполнения операции при делении нуля на нуль;
  • • Negativelnfinity — представление отрицательной бесконечности, например, при делении отрицательного числа на нуль;
  • • Positivelnfinity — представление положительной бесконечности, например, при делении положительного числа на нуль.

В следующей программе выводятся значения перечисленных констант, определенных для типов int и double.

// 0504.cs — Константы и предельные значения using static System. Console; class Program {.

static void MainQ.

{

WriteLine («int.MinValue = «+ int. MinValue);

WriteLine («int.MaxValue = «+ int. MaxValue);

WriteLine («double.MinValue = «+ double. MinValue); WriteLine («double.MaxValue = «+ double. MaxValue); WriteLine («double.Epsilon = «+ double. Epsilon); WriteLine («double.NaN = «+ double. NaN);

WriteLine («double.Positivelnfinity = «+ double. Positivelnfinity);

WriteLine («double.Negativelnfinity = «+.

double.Negativelnfinity);

double zero = 0.0, value = 2.7172;

WriteLine («value/zero = «+ value / zero);

WriteLine («0.0/zero = «+ 0.0 / zero);

} }

Результаты выполнения:

int.MinValue = -2 147 483 648 int. MaxValue = 2 147 483 647 double. MinValue = -l, 7 976 931 348 6232E+308 double. MaxValue = 1,7 976 931 348 6232E+308 double. Epsilon = 4,9 406 564 584 1247E-324 double. NaN = NaN.

double.Positivelnfinity = бесконечность double. Negativelnfinity = -бесконечность value/zero = бесконечность 0.0/zero = NaN.

Контрольные вопросы и задания

  • 1. Назовите две основные части платформы .NET Framework.
  • 2. Что такое CIL (Common Intermediate Language)?
  • 3. Укажите назначение общеязыковой спецификации CLS (Common Language Specification)?
  • 4. Какие члены могут присутствовать в классе в соответствии с требованиями общей системы типов CTS?
  • 5. Какую функциональность обеспечивает класс object объектам всех типов языка С#?
  • 6. Приведите названия типов CTS, которые представлены в языке C# базовыми типами, например, double.
  • 7. Какие базовые типы языка C# не соответствуют CLS?
  • 8. Назовите три метода, унаследованные любым типом языка C# от базового класса object?
  • 9. Объясните возможности и ограничения метода Parse ().
  • 10. Объясните возможности метода TryParse ().
  • 11. Назовите члены базовых типов, позволяющие оценивать их предельные значения.
Показать весь текст
Заполнить форму текущей работой