Главная страница » C# » 28. Явное преобразование типов
В C# явное преобразование типов (explicit conversion) требуется, когда преобразование может привести к потере данных или ошибке. Оно выполняется вручную с использованием оператора приведения (тип)
или специальных методов.
📌 Пример явного преобразования:
double number = 9.7;
int result = (int)number; // Приведение double к int (отбрасывается дробная часть)
Console.WriteLine(result); // 9
Если меньший тип не может вместить значение большего типа, то дробная часть отбрасывается.
double num = 10.75;
int intNum = (int)num; // Явное приведение (дробная часть отбрасывается)
Console.WriteLine(intNum); // 10
Если число превышает допустимые границы типа, происходит переполнение.
int bigNumber = 300;
byte smallNumber = (byte)bigNumber; // Потеря данных
Console.WriteLine(smallNumber); // 44 (из-за переполнения)
checked
для контроля переполненияЧтобы избежать неожиданного переполнения, используйте checked
:
checked
{
int bigValue = 300;
byte smallValue = (byte)bigValue; // Ошибка при выполнении
}
💡 Если переполнение происходит внутри checked
блока – программа завершится с исключением.
При наследовании можно приводить объекты от базового типа к производному и наоборот.
class Animal { }
class Dog : Animal { }
Animal a = new Dog();
Dog d = (Dog)a; // Явное приведение
📌 Но если типы несовместимы, произойдет ошибка!
Чтобы избежать ошибок, используйте is
или as
:
object obj = "Hello";
if (obj is string str)
{
Console.WriteLine(str.ToUpper()); // HELLO
}
object obj2 = 123;
string? text = obj2 as string; // Вернет null, а не ошибку
Console.WriteLine(text); // Выведет пустую строку
Convert.ToInt32
string text = "123";
int number = Convert.ToInt32(text);
Console.WriteLine(number); // 123
📌 Если строка содержит нечисловые символы – ошибка!
int.Parse
string text = "456";
int num = int.Parse(text);
Console.WriteLine(num); // 456
4.3. int.TryParse
(безопасный метод)
string input = "abc";
if (int.TryParse(input, out int value))
{
Console.WriteLine(value);
}
else
{
Console.WriteLine("Ошибка преобразования!");
}
💡 TryParse
не вызывает исключение, если преобразование невозможно.
🔹 Явное преобразование используется, когда возможна потеря данных или исключение.
🔹 Числовые типы приводятся через (тип)
, но возможны переполнения.
🔹 Для ссылочных типов лучше использовать is
и as
для безопасности.
🔹 Преобразование строк в числа через int.Parse
и TryParse
помогает избежать ошибок.
🚀 Правильное преобразование типов делает код более надежным и безопасным!
double
в int
, отбрасывая дробную часть.object
к string
через as
.TryParse
для безопасного преобразования строки в число.Пример кода:
using System;
class Program
{
static void Main()
{
// Преобразование double в int
double number = 12.99;
int intNumber = (int)number;
Console.WriteLine($"Преобразованное число: {intNumber}");
// Преобразование object в string
object obj = "Hello, C#";
string? text = obj as string;
Console.WriteLine(text ?? "Не удалось преобразовать");
// Безопасное преобразование строки в число
string input = "42";
if (int.TryParse(input, out int result))
{
Console.WriteLine($"Число: {result}");
}
else
{
Console.WriteLine("Ошибка преобразования!");
}
}
}
Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024-2025 Все права защищены. CodeFor.
Язык сайта: