【发布时间】:2011-11-18 02:25:43
【问题描述】:
鉴于这些类型:
class A { }
class B
{
public static implicit operator A(B me)
{
return new A();
}
}
class Test<T> where T : A { }
我试过了
var b = new Test<B>();
并预计它会失败,它确实做到了。但是错误信息是
类型“B”不能用作泛型类型或方法“Test”中的类型参数“T”。没有从“B”到“A”的隐式引用转换。
但是是从B到A的隐式引用转换。这只是一个奇怪的消息吗?不是隐式引用转换正如亚当罗宾逊的回答所示。消息是正确的。
其中 T :(基类名称)- 类型参数必须是指定的基类或派生自指定的基类。
这解释了为什么它是不允许的,因为B 不是从A 派生的
【问题讨论】:
标签: c# generics implicit-conversion