Неявное преобразование
Оператор 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,
к которому часто неявно приводят обёртки