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

Неявное преобразование

Оператор implicit operator объявляют public static внутри типа. Он описывает, как ваш тип преобразуется в другой тип без записи в скобках. Компилятор подставляет преобразование там, где оно однозначно подходит - в отличие от explicit operator.

Синтаксис

public static implicit operator ЦелевойТип(ИсходныйТип value)

Пример

Давайте неявно преобразовать обёртку в string:

using System; class TextWrap { public string Text; public static implicit operator string(TextWrap wrap) { return wrap.Text; } } class Program { static void Main() { TextWrap wrap = new TextWrap { Text = "abcde" }; string res = wrap; Console.WriteLine(res); } }

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

"abcde"

Пример

Давайте неявно получить int из типа с полем:

using System; struct Number { public int Value; public static implicit operator int(Number num) { return num.Value; } } class Program { static void Main() { Number num = new Number { Value = 5 }; int res = num; Console.WriteLine(res); } }

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

5

Пример

Давайте передать объект в метод, ожидающий строку:

using System; class Label { public string Text; public static implicit operator string(Label label) { return label.Text; } } class Program { static void Print(string text) { Console.WriteLine(text); } static void Main() { Label label = new Label { Text = "12345" }; Print(label); } }

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

"12345"

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

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