什麼是「從任何類型S到任何接口類型T,只要S不密封並且提供了S不執行T。」其實是指?什麼是「從任何類型S到任何接口類型T,只要S不密封,並且提供S不實現T.」其實是指?
我碰到這在C#語言規範here傳來:
6.2.4顯式引用轉換
顯式引用轉換 是:
- ...
- 從任何類型S到任何接口類型T,pro vided S也不 密封,並提供S不 實現T.
我能明白「只要S不密封」的意思,但我不知道如果我明白「只要S不不執行T「的意思。
例如:
class S {}//not sealed, nor does it implement T
interface T {}
...
T t = (T)new S();//will throw InvalidCastException.
難道是因爲它是在規格僅枚舉表達一個明確的引用轉換,所有的語法正確的方式不管它是否會拋出異常或不?或者它是否意味着我不知道的其他一些東西(截至目前爲止)?
在此先感謝。
注意:在您的示例中存在顯式轉換。否則它不會編譯。所有的編譯時都很好。轉換在運行時爆發的事實是* explicit *轉換的典型特徵。有時他們會拋出,有時會成功。相反,如果'S'實現了'T',則會有一個***隱式***參考轉換(參見其他小節)。所以他們說'S'沒有實現'T'的原因是否則就會有另一個(優越的)轉換可用。 – 2015-04-24 22:03:12