Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1104 of 1492 menu
◀ ▶

Явное преобразование

Оператор explicit operator объявляют public static в типе. Преобразование запускают записью (ЦелевойТип)значение - компилятор сам не подставит такой каст, в отличие от implicit operator. Используют, когда преобразование может терять данные или требует явного согласия.

Синтаксис

public static explicit operator ЦелевойТип(ИсходныйТип value) var res = (ЦелевойТип)исходноеЗначение;

Пример

Давайте явно преобразовать число в свой тип:

using System; class Digit { public int Value; public static explicit operator Digit(int num) { return new Digit { Value = num }; } } class Program { static void Main() { Digit digit = (Digit)5; Console.WriteLine(digit.Value); } }

Результат выполнения кода:

5

Пример

Давайте явно получить int из обёртки:

using System; class Wrap { public int Value; public static explicit operator int(Wrap wrap) { return wrap.Value; } } class Program { static void Main() { var wrap = new Wrap { Value = 12 }; int res = (int)wrap; Console.WriteLine(res); } }

Результат выполнения кода:

12

Пример

Давайте явно преобразовать строку в тип с полем:

using System; class Token { public string Text; public static explicit operator Token(string text) { return new Token { Text = text }; } } class Program { static void Main() { Token token = (Token)"abcde"; Console.WriteLine(token.Text); } }

Результат выполнения кода:

"abcde"

Смотрите также

  • преобразование implicit operator,
    которое не требует каста
  • оператор is,
    который проверяет тип перед приведением
  • тип string,
    к которому часто задают explicit
  • ключевое слово class,
    в котором объявляют explicit operator
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить