C#为什么支持协变的参数只能用于方法的返回值?支持逆变的参数只能用于方法参数?...
生活随笔
收集整理的這篇文章主要介紹了
C#为什么支持协变的参数只能用于方法的返回值?支持逆变的参数只能用于方法参数?...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
“TParent不能安全轉換成TSub”,是這兩個問題的共同原因。
我們定義一個接口IFoo。
?
????{
????????void?Method1(T?param);
????????T?Method2();
????}
我們看一下協(xié)變的過程:IFoo<TSub>轉換成IFoo<TParent>。
Method1:將TSub替換成TParent,Method1顯然存在 TParent到TSub的轉換。
Method2:返回值類型從TSub換成了TParent,是類型安全的。
所以支持協(xié)變的參數(shù)只能用在方法的返回值中。
再看一下逆變的過程:IFoo<TParent>轉換成IFoo<TSub>。
Method1:將TParent替換成TSub,Method1存在 TSub到TParent的轉換,是類型安全的。
Method2:返回值類型從TParent換成了TSub,是不安全的。
所以支持逆變的參數(shù)只能用在方法的參數(shù)中。轉載于:https://www.cnblogs.com/ctou45/archive/2012/12/04/2801242.html
總結
以上是生活随笔為你收集整理的C#为什么支持协变的参数只能用于方法的返回值?支持逆变的参数只能用于方法参数?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 图片
- 下一篇: c# treeView 取消选择事件