逆变器中by default所有意思是什么意思

docid="ad54fa410cdd3" alt="" />
<p ...孤独的秋天,冬天沉睡,让心灵力陪你一起直播春天 电子书
轻轻敲开沉睡的心灵,......在线互动式文档分享平台,在这里,您可以和千万网友分享自己手中的文档,全文阅读其他...游戏直播竞品分析,以虎牙斗鱼网易CC为主(市场篇)_互联网_IT/计算机_专业资料。...以战旗T V 为例,签约了Snake、WE、RNG等LO L战队;签约了毛毛鸭、DD、Newbee......v e s t i g a t i o na n dD e s i g n A u g u s t ....2007 文章编号 : ( 16 -01 荒山应该提倡山杏直播......图文讲解dd-wrt无线的几种模式扫盲帖子_计算机硬件及网络_IT/计算机_专业...间 612 804 88.5 88.5 67.0 118.8 BG4CNB BG4CNB...DD88 433.500 *** (大多数户外活动组织用频率) 434.500 拉风大本营(杭州公共......DD 清纯美女
电视直播普京当场羞辱斥责俄罗斯首...从日开始,印度的国 家电视台拥有的DD Direct+ 采用卫星 直播的...其实对于卫星直播来说,无论是 300个接收终端还是3亿个接收终端,空 间段并不......在线互动式文档分享平台,在这里,您可以和千万网友分享自己手中的文档,全文阅读其他...在线互动式文档分享平台,在这里,您可以和千万网友分享自己手中的文档,全文阅读其他...1、什么是协变、逆变?假设:TSub是TParent的子类。协变:如果一个泛型接口IFoo&T&,IFoo&TSub&可以转换为IFoo&TParent&的话,我们称这个过程为协变,IFoo支持对参数T的协变。逆变:如果一个泛型接口IFoo&T&,IFoo&TParent&可以转换为IFoo&TSub&的话,我们称这个过程为逆变,IFoo支持对参数T的逆变。
2、为什么要有协变、逆变?通常只有具备继承关系的对象才可以发生隐式类型转换,如Base b=new sub()。协变和逆变可以使得更多的类型之间能够实现隐式类型转换、类型安全性有了保障。3、为什么泛型接口要引入协变、逆变?基于以上原因的同时、许多接口仅仅将类型参数用于参数或返回值。所以支持协变和逆变后泛型的使用上有了更大的灵活性4、为什么支持协变的参数只能用于方法的返回值?支持逆变的参数只能用于方法参数?&TParent不能安全转换成TSub&,是这两个问题的共同原因。我们定义一个接口IFoo。&
&&&&interface&IFoo&T&&&&&{&&&&&&&&void&Method1(T&param);&&&&&&&&T&Method2();&&&&}
我们看一下协变的过程:IFoo&TSub&转换成IFoo&TParent&。
Method1:将TSub替换成TParent,Method1显然存在 TParent到TSub的转换。
Method2:返回值类型从TSub换成了TParent,是类型安全的。
所以支持协变的参数只能用在方法的返回值中。
再看一下逆变的过程:IFoo&TParent&转换成IFoo&TSub&。
Method1:将TParent替换成TSub,Method1存在 TSub到TParent的转换,是类型安全的。
Method2:返回值类型从TParent换成了TSub,是不安全的。
所以支持逆变的参数只能用在方法的参数中。
5、泛型接口支持协变、逆变和不支持协变、逆变的对比?
这其实是对3个问题的补充。
定义一个接口IFoo,既不支持协变,也不支持逆变。
&&&&interface&IFoo&T&&&&&{&&&&&&&&void&Method1(T&param);&&&&&&&&T&Method2();&&&&}
实现接口IFoo
&&&&public&class&FooClass&T&&:&IFoo&T&&&&&{&&&&&&&&public&void&Method1(T&param)&&&&&&&&{&&&&&&&&&&&&Console.WriteLine(default(T));&&&&&&&&}&&&&&&&&public&T&Method2()&&&&&&&&{&&&&&&&&&&&&return&default(T);&&&&&&&&}&&&&}
定义一个接口IBar支持对参数T的协变
&&&&interface&IBar&out&T&&&&&{&&&&&&&&T&Method();&&&&}
实现接口IBar
&&&&public&class&BarClass&T&&:&IBar&T&&&&&{&&&&&&&&public&T&Method()&&&&&&&&{&&&&&&&&&&&&return&default(T);&&&&&&&&}&&&&}
&定义一个接口IBaz支持对参数T的逆变
&&&&interface&IBaz&in&T&&&&&{&&&&&&&&void&Method(T&param);&&&&}
实现接口IBaz
&&&&public&class&BazClass&T&&:&IBaz&T&&&&&{&&&&&&&&public&void&Method(T&param)&&&&&&&&{&&&&&&&&&&&&Console.WriteLine(param.ToString());&&&&&&&&}&&&&}
定义两个有继承关系的类型,IParent和SubClass。
&&&&interface&IParent&&&&{&&&&&&&&void&DoSomething();&&&&}&&&&public&class&SubClass&:&IParent&&&&{&&&&&&&&public&void&DoSomething()&&&&&&&&{&&&&&&&&&&&&Console.WriteLine("SubMethod");&&&&&&&&}&&&&}
按照协变的逻辑,分别来使用IFoo和IBar。
&&&&&&&&&&& //IFoo&不支持对参数T的协变&&&&&&&&&&&&IFoo&SubClass&&foo_sub&=&new&FooClass&SubClass&();&&&&&&&&&&&&IFoo&IParent&&foo_parent&=&foo_//编译错误&&&&&&&&&&&&//IBar&支持对参数T的协变&&&&&&&&&&&&IBar&SubClass&&bar_sub&=&new&BarClass&SubClass&();&&&&&&&&&&&&IBar&IParent&&bar_parent&=&bar_
foo_parent&=&foo_sub 会提示编译时错误&无法将类型&IFoo&SubClass&&隐式转换为&IFoo&IParent&&。存在一个显式转换(是否缺少强制转换?)&
按照逆变的逻辑,分别来使用IFoo和IBaz。
&&&&&&&&&&&&//IFoo&对参数T逆变不相容&&&&&&&&&&&&IFoo&IParent&&foo_parent&=&null;&&&&&&&&&&&&IFoo&SubClass&&foo_sub&=&foo_//编译错误&&&&&&&&&&&&//IBaz&对参数T逆变相容&&&&&&&&&&&&IBaz&IParent&&baz_parent&=&null;&&&&&&&&&&&&IBaz&SubClass&&baz_sub&=&baz_
&foo_sub&=&foo_parent 会提示编译时错误&无法将类型&IFoo&IParent&&隐式转换为&IFoo&ISub&&。存在一个显式转换(是否缺少强制转换?)&
6、.NET4.0对IEnumerable接口的修改?
2.0中的定义:
&&&&public&interface&IEnumerable&T&&:&IEnumerable&&&&{&&&&&&&&IEnumerator&T&&GetEnumerator();&&&&}
4.0中的定义:
&&&&public&interface&IEnumerable&out&T&&:&IEnumerable&&&&{&&&&&&&&IEnumerator&T&&GetEnumerator();&&&&}
可以看到4.0中增加了对协变的支持。
可以在两个版本试下, 下面的语句在2.0下会报错。
&&& List&SubClass&&subarr&=&new&List&SubClass&();&&& IEnumerable&IParent&&parentarr&=&
/zh-CN/library/dd799517 /Ninputer/archive//generic_covariant.html/idior/archive//1761383.html/artech/archive//variance.html
阅读(...) 评论()光伏逆变器
光伏逆变器
SPV-10kW三相光伏并网逆变器
&#8226; 两路MPPT追踪电路,高效转换
&#8226; 并网、离网混合,自立运行
&#8226; 低压启动,长时发电
&#8226; 合理的结构具有良好散热能力,兼顾室内外使用}

我要回帖

更多关于 default意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信