Преобразования типов данных

C# предоставляет пользователям, то есть нам с вами, большой выбор различных типов данных. Но что если нам нужно преобразовать один тип в другой? В этом нам с вами поможет приведение типов. В C# предусмотрено явное и неявное приведение типов. Неявное преобразование типов происходит автоматически и без какой-либо потери точности данных. Рассмотрим код:

long t;

int x = 10;

t = x;

Этот код легко скомпилируется, можете в этом наглядно убедиться. Но почему компилятор позволяет нам выполнить данную операцию? Более того, он сам ее делает за нас!

Для типа int допустимый диапазон значений составляет от -2147483648 до 2147483647, для типа long от -922337203685477508 до 922337203685477507. Что это означает? А означает это следующее: что при любом допустимом значении переменной x, это значение никак не сможет превысить допустимые значения типа long. Именно по этой причине компилятор позволяет нам выполнить данные действия. А что если мы попробуем немножко модифицировать наш код? В коде:

int t;

long x = 10;

t = x;

Компилятор тут же выдает ошибку. В этом случае, если нам действительно нужно сделать преобразование, то мы можем сообщить об этом компилятору, используя так называемое явное приведение типов. Важно знать, что в этом случае успех выполнения операции не гарантируется и вполне возможна потеря точности! Тем не менее, компилятор нам больше не помеха, он скинул с себя всю ответственность на наши с вами плечи. «Хочешь преобразовать double во float? Без проблем брат, но запомни, я тебя предупреждал, все может кончиться крайне плачевно!»

Как правильно записать. Вот синтаксис:

имя_переменной = (тип)имя_переменной;

Рассмотрим следующий пример. Допустим, у нас с вами есть здание. Нам дана суммарная площадь всех его квартир в квадратных метрах. И из учета того, что на одного человека должно приходиться 30,4 квадратных метров, программа должна подсчитать максимально возможное число жителей. Вот ее код:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication5

{

class Program

{

static void Main(string[] args)

{

double square = 835.6; //площадь здания

double squareperpeople = 30.4; //площадь на одного человека

int people; //максимальное число жителей

people = (int)(square / squareperpeople);

Console.WriteLine("Максимальное число людей в здании площадью " + square + " равно " + people);

Console.ReadKey();

}

}

}

Вообще вы можете преобразовать практически любой тип (о том какие именно типы разрешено преобразовывать а какие нет, вы можете прочитать на страницах MSDN).

Примеры для закрепления:

char ch = 'A';

int x = (int)ch; // результат 65

double pi = 3.14;

float pi2 = (float)pi; // результат 3.14

int y = 2419;

byte y2 = (byte)y; // результат 115

Как получаются значения? Откуда они берутся? Давайте посмотрим. Есть следующий код:

int y = 2419;

byte y2 = (byte)y;

Результат будет 115. Вот как можно его получить. Зная, что тип byte может принимать значения от -128 до 127, легко подсчитать, что в сумме этот тип может принять 256 значений (включая 0). Так вот, умножим это значение на 9 (попробуйте догадаться, для чего мы это делаем), получим 2304. Прибавим к этому значению 115 и получим 2419 Я надеюсь что теперь вы понимаете что эти значения отнюдь не случайны.

Как преобразовать произвольный тип в строку? Со строками дела обстоят чуть-чуть иначе, нежели с другими типами. Тут тоже нет ничего сложного, это нужно просто запомнить. Существует специальный метод, позволяющий преобразовать любой тип в строку. Рассмотрим его применение в следующем коде:

int y = 530;

string str = y.ToString(); // преобразовать "у" в строку

Console.WriteLine(str);

Результатом выполнения этой программы будет «530». Как видите, чтобы преобразовать «у» в строку, нам потребовалось поставить после него оператор «.» (очень важный оператор в C#, разговоры о нем у нас впереди) и из списка возможных методов выбрать нужный нам «ToString()». Данный метод будет работать с абсолютно любым типом данных, попробуйте и убедитесь сами

Задания к лабораторной работе 2:

1. Изучить предлагаемую теорию.

2. Записать и откомпилировать программы, использующие графический интерфейс, ввод, вывод различных типов данных, рассмотренных в лабораторной работе 2.

3. Выполнить домашние задания (тема 2, тема 10), согласно номеру варианта.



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



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