的“协方差”当我们有两个结构,一个可以隐式转换到另一个时,那么看起来两个版本System.Nullable<>
也可以隐式转换。类似地,如果结构A
具有隐式转换为结构B
,那么A?
也转换为B?
。System.Nullable <> struct
下面是一个例子:
struct MyNumber
{
public readonly int Inner;
public MyNumber(int i)
{
Inner = i;
}
public static implicit operator int(MyNumber n)
{
return n.Inner;
}
}
里面的一些方法:
MyNumber? nmn = new MyNumber(42);
int? covariantMagic = nmn; // works!
在C#语言规范版本4.0我们看到这样的转换应“的预定义的隐式标识存在和数值转换“。
但是是否安全地假设它也可以用于用户定义的隐式转换?
(这个问题可能与此错误:http://connect.microsoft.com/VisualStudio/feedback/details/642227/)
你有没有时间看这些报价,或者你只是手工打字? – Blindy
@Bindind:都!我在我的办公桌上有规格的硬拷贝,我通过输入...复制了本节,因此任何错别字! –
嗯,我错过了第6.4.2节,只读过6.1.4。谢谢。 –