Операции приведения к типу

Эта операция используется тогда, когда необходимо преобразовать значение одного типа в значение другого типа. Это так называемое явное преобразование типов. Операция задаётся указанием имени типа в круглых скобках. Например, (byte) – преобразовать в тип байт. Рассмотрим пример:

int n = 10;

double z;

z = n;

n = (int) z;

В данном примере объявлены две переменные, причём целочисленной уже присвоено значение. После присваивания значением z будет число 10,0 – такое преобразование выполнится неявно автоматически, и несогласования типов не будет. А вот обратное преобразование надо задавать явно. Понять, когда возможно неявное преобразование, а когда приведение надо делать явно, можно на основании схемы (рис). На схеме перечислены все арифметические типы. Стрелками указаны направления, по которым автоматически осуществляется неявное преобразование (например, из byte в double). Любое обратное приведение (против стрелок) должно быть явным. Но надо помнить: ответственность за такое преобразование лежит на программисте. Вполне может оказаться, что при таком преобразовании будут искажены данные или потеряна точность, и система об этом не сообщит.

 

Схема разрешенных неявных преобразований типов

Строковые преобразования

Не существует явного преобразования арифметических типов в строки. Операция «приведение к типу» здесь невозможна. Однако в базовом классе Object имеется и определён метод ToString. Так как все арифметические типы данных считаются потомками (наследниками) класса Object, то для них предусмотрена соответствующая реализация этого метода. Следовательно, метод ToString можно использовать, когда любое арифметическое значение надо преобразовать в строку. Например:

string s;

int n = 2010;

s = "Год "+ToString(n);

Достаточно часто требуется обратное преобразование – строку в число. Для таких преобразований предусмотрен специальный класс методов – класс Convert, встроенный в пространство имен System. Этот класс содержит 15 статических методов вида To (ToBoolean, … ТоInt64), где Type может принимать значения от Boolean до UInt64. Например

decimal d = Convert.ToDecimal(“123,456”);

Константы

Для определения констант в C# используется ключевое слово const. Пример:

public const intTest=10;

static void Main (string [] args)

{ Console.WriteLine (Test);}

Часто оказываются полезным все константы программы собрать в одном месте, например в классе. Чтобы запретить создавать экземпляры класса, целесообразно объявить его с ключевым словом abstract. В этом случае при любой попытке создать экземпляр класса компилятор выведет сообщение об ошибке.

Операторы ветвления

В языке C# ветвление реализуется двумя операторами - if и switch.

Оператор if служит для разветвления программы на два и более направлений. Если некоторое условие выполняется, то программа идет в одну сторону, если не выполняется - то в другую. Ниже приведен пример, определяющий, четное или нечетное число ввел пользователь:

class Class1

{

 

static void Main(string[] args)

{

  int k = Int32.Parse(Console.ReadLine());

  if(b)

  {

 Console.WriteLine("Четное число");

  }

  else

  {

 Console.WriteLine("Нечетное число");

  }

 Console.ReadLine();

}

}

Как и в других C-подобных языках, фигурные скобочки можно не писать в случае одного оператора. Также написание ветки else тоже не является необходимым - все зависит от конкретной задачи.

Оператор switch примеряется тогда, когда программа должна разделиться более чем на два направления.

int k = Int32.Parse(Console.ReadLine());

Console.WriteLine(k.ToString());

switch (k)

{

case 1:

case 2:

  Console.WriteLine("Неудовлетворительно");

  break;

case 3:

  Console.WriteLine("Удовлетворительно");

  break;

case 4:

  Console.WriteLine("Хорошо");

  break;

case 5:

  Console.WriteLine("Отлично");

  break;

default:

  Console.WriteLine("Ошибка");

  break;

}

В приведенном примере в зависимости от введенного пользователем числа на экран выводится та или иная оценка. Если число k не лежит в промежутке от 1 до 5, то выполняются операторы в ветке default и выводится надпись "Ошибка".

Ветка default не обязательна. Важную роль играет оператор break. Если его не написать, то будут выполняться операторы из следующей ветки case до строки с break'ом (т. е. в данном примере если пользователь введет 1 или 2, то программа выведет "Неудовлетворительно"). Если в некоторой ветке case или default есть операторы, то написание break обязательно. Так, в следующих двух кусках кода есть ошибки:

...

case 1:

Console.WriteLine("Совсем неудовлетворительно");

//Ошибка! Тут пропущен break

case 2:

Console.WriteLine("Неудовлетворительно");

break;

...

...

default:

Console.WriteLine("...");

//Ошибка! Тут пропущен break

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: