的「協方差」當我們有兩個結構,一個可以隱式轉換到另一個時,那麼看起來兩個版本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。謝謝。 –