嵌套隐式运算符
作者:互联网
我有一个名为Optional<的自定义类. 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;
}
好的,到目前为止,可以直接执行以下操作:
Optional<int> val = 33; //ok
int iVal = val; //ok
但是,这不起作用:
Optional<Optional<int>> val = 33; //error, cannot convert implicitly
所以我想知道如何支持前面的案例.
干杯.
解决方法:
您不能链接用户定义的隐式运算符.如果定义从A到B以及从B到C的隐式转换,则没有从A到C的隐式转换会同时调用这两者.您将需要创建一个从A到C的用户定义的单独转换,或者需要进行显式转换才能为您完成一半的转换.
标签:operator-overloading,implicit-conversion,c 来源: https://codeday.me/bug/20191118/2025581.html