【发布时间】:2020-04-14 02:27:46
【问题描述】:
此代码给出错误:
public class A<T>
{
public class B<T1> : A<T1>
{
public static implicit operator bool(B<T1> b) => true;
}
}
但是如果我把类分开,就没有错误:
public class A<T> { }
public class B<T> : A<T>
{
public static implicit operator bool(B<T> b) => true;
}
【问题讨论】:
-
第二种情况你写的是
public static implicit operator bool(B<T> b),而不是public static implicit operator bool(A<T> b) -
错误很明显。在第一个示例中,您有
bool(A<T> b)。应该是bool(B<T> b)。 -
第二个代码 sn-p 中的隐式运算符具有不同的签名 - 它接受
B<T>而不是A<T>,因此两个代码 sn-ps 没有真正可比性。如果把参数类型改成A<T>那么也会报错。 -
@KevinGosse 我解决了这个问题
-
@Jimi,不,我编辑了问题,它不起作用
标签: c# generics inner-classes implicit