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