Неявное преобразование при использовании оператора присваивания.
Неявные преобразования.
Приведение и преобразование типов.
Операторы перехода
Пример.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int x = 0;
do
{
Console.WriteLine(x);
x++;
} while (x < 5);
}
}
}
Операторы перехода осуществляют безусловную передачу управления. Операторы перехода могут передавать управление за пределы блока, но они никогда не передают управление внутрь блока.
Оператор breakосуществляет выход из ближайшего объемлющего оператора switch, while, do, for или foreach.
Оператор continue начинает новую итерацию ближайшего объемлющего оператора while, do, for или foreach goto
Оператор return возвращает управление в программу, вызвавшую функцию-член, в которой используется оператор return. Оператор return с выражением может использоваться только в функции-члене, вычисляющей значение, т. е. в методе с типом возвращаемого значения, отличным от void, в методе доступа get для свойства или индексатора или в операторе, определенном пользователем.
Преобразования бывают явными и неявными.
int a = 123; long b = a; // implicit conversion from int to long
// неявное перобразование типов, из int к long
int c = (int) b; // explicit conversion from long to int
// явное перобразование типов, из long к int
При вызове члена функции (метода). Для параметра имеющего тип значения вычисляется выражение аргумента и выполняется неявное преобразование в соответствующий тип параметра. Пример.
using System;
namespace ConsoleApplication5
{
class Program
{
static double f(double a, double b)
{
return a + b;
}
static void Main(string[] args)
{
int r = 2222;
double rez = f(r, 42222);
Console.WriteLine(rez);
}
}
}
Пример. Неявное преобразованиечислового типа: из int к long. Компилятор неявно преобразует значение справа в тип long перед присвоением его переменной bigNum. Преобразование от меньшего к большему целому типу.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int num = 2147483647;
long bigNum = num;
}
}
}
Существуют следующие неявные преобразования числовых типов:
· из sbyte к short, int, long, float, double или decimal;
· из byte к short, ushort, int, uint, long, ulong, float, double или decimal;
· из short к int, long, float, double или decimal;
· из ushort к int, uint, long, ulong, float, double или decimal;
· из int к long, float, double или decimal;
· из uint к long, ulong, float, double или decimal;
· из long к float, double или decimal;
· из ulong к float, double или decimal;
· из char к ushort, int, uint, long, ulong, float, double или decimal;
· из float к double.
Преобразования из типов int, uint, long или ulong к float, а также из long или ulong к double могут привести к потере точности, но не величины. Другие неявные преобразования числовых типов никогда не приводят к потере данных.
Неявных преобразований к типу char не существует, поэтому значения любых других целых типов не могут быть преобразованы к типу char.