其他分享
首页 > 其他分享> > 嵌套隐式运算符

嵌套隐式运算符

作者:互联网

我有一个名为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