У меня есть собственный класс с именем Необязательный < T>. Этот класс переопределяет оператор неявного, что-то вроде этого:Вложенный неявный оператор
public static implicit operator Optional<T>(T value)
{
return new Optional<T>(value);
}
public static implicit operator T(Optional<T> value)
{
return value.value;
}
Ok, до сих пор все в порядке, прямые операции, как эти работы:
Optional<int> val = 33; //ok
int iVal = val; //ok
Но это не работает:
Optional<Optional<int>> val = 33; //error, cannot convert implicitly
Так что мне интересно, как можно поддержать предыдущий случай.
Cheers.
Можете ли вы добавить пример использования явного оператора для помощи в этом случае? Благодарю. – Gusman
@ Gusman Если есть неявное преобразование из A в B и из B в C, вы можете написать 'C c = (B) a;', так как это заканчивается только одним неявным пользовательским преобразованием. – Servy
Хорошо, я понимаю, я думал, что вы хотите переопределить явный оператор. Благодарю. – Gusman