Явное преобразование
Оператор 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