Явное приведение
Сужение типа - double в int,
long в int - требует записи
(тип)значение. В блоке unchecked
переполнение при cast обрезает старшие биты,
а не бросает исключение. Это языковое
приведение, не explicit operator
своего типа.
Синтаксис
int num = (int)3.9;
int narrow = unchecked((int)wide);
Пример
Давайте явно сузить double до int:
using System;
class Program
{
static void Main()
{
double num = 3.9;
int res = (int)num;
Console.WriteLine(res);
}
}
Результат выполнения кода:
3
Пример
Давайте сузить long до int:
using System;
class Program
{
static void Main()
{
long wide = 12345L;
int res = (int)wide;
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте увидеть переполнение в unchecked:
using System;
class Program
{
static void Main()
{
long wide = 3000000000L;
int res = unchecked((int)wide);
Console.WriteLine(res);
}
}
Результат выполнения кода:
-1294967296
Смотрите также
-
приведение
cast,
с тем же синтаксисом скобок -
приведение
implicit,
которое не требует cast -
оператор
explicit operator,
который объявляют в своём типе -
тип
int,
к которому сужают long и double