分手快乐 发表于 2015-1-18 11:17:53

ASP.NET网页编程之逆变与协变详解仓酷云

据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。逆变(contravariant)与协变(covariant)是C#4新增的观点,很多书本和博客都有解说,我以为都没有把它们讲分明,弄分明了它们,能够更正确地往界说泛型托付和接口,这里我实验绘图具体剖析逆变与协变。
变的观点

我们都晓得.Net里大概说在OO的天下里,能够平安地把子类的援用赋给父类援用,比方:
1
2
3
//父类=子类
stringstr="string";
objectobj=str;//变了
而C#里又有泛型的观点,泛型是对范例体系的进一步笼统,比下面复杂的范例初级,把下面的变更表现在泛型的参数上就是我们所说的逆变与协变的观点。经由过程在泛型参数上利用in或out关头字,能够失掉逆变或协变的才能。上面是一些对照的例子:
协变(Foo<父类>=Foo<子类>):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//泛型托付:
publicdelegateTMyFuncA<T>();//不撑持逆变与协变
publicdelegateTMyFuncB<outT>();//撑持协变
MyFuncA<object>funcAObject=null;
MyFuncA<string>funcAString=null;
MyFuncB<object>funcBObject=null;
MyFuncB<string>funcBString=null;
MyFuncB<int>funcBInt=null;
funcAObject=funcAString;//编译失利,MyFuncA不撑持逆变与协变
funcBObject=funcBString;//变了,协变
funcBObject=funcBInt;//编译失利,值范例不介入协变或逆变
//泛型接口
publicinterfaceIFlyA<T>{}//不撑持逆变与协变
publicinterfaceIFlyB<outT>{}//撑持协变
IFlyA<object>flyAObject=null;
IFlyA<string>flyAString=null;
<p>IFlyB<object

小女巫 发表于 2015-1-18 20:54:19

主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。

谁可相欹 发表于 2015-1-21 11:43:57

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

admin 发表于 2015-1-28 11:49:38

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

莫相离 发表于 2015-2-2 16:20:08

ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。

老尸 发表于 2015-2-2 16:20:37

主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。

简单生活 发表于 2015-2-5 15:18:10

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

因胸联盟 发表于 2015-2-12 11:38:58

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

透明 发表于 2015-3-3 02:22:48

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。

精灵巫婆 发表于 2015-3-9 14:58:18

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

若相依 发表于 2015-3-11 01:51:38

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。

小魔女 发表于 2015-3-17 18:10:28

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

不帅 发表于 2015-3-24 18:08:25

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
页: [1]
查看完整版本: ASP.NET网页编程之逆变与协变详解仓酷云