仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2704|回复: 13
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之.NET泛型中的协变与逆变仓酷云

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……以后.NET言语如VB和C#还不撑持泛型的协变(covariance)与逆变(contravariance)。只管微软中的良多人也在议论它,可是在不远的未来这仍是不太大概呈现。对协变与逆变的完全先容要花很长工夫。基于此,请人人参考EricLippert的关于C#中的协变与逆变的系列文章。为了在VB中增添协变与逆变的泛型撑持,LucianWischik提出了上面的语法。
范例参数可由关头字“In”和“Out”润色。“In”范例只能作为办法参数。与此相似,“Out”范例只能作为办法的前往范例。
利用Out范例的一个例子就是IEnumerable(OfT)。假如某函数承受一个IEnumerable(OfAnimal)范例参数,那末我们就能够给它传一个IEnumerable(ofBird)。关于In范例,一个不太得当的例子就是按次。看一下上面的接口:
  1. InterfaceIWriter(OfT)Write(valueAsT)
复制代码
假如你向承受Writer(OfAnimal)范例参数的函数传一个IWriter(OfBird),固然就不合错误了。该办法能够将Animal的任何子类传给IWriter.Write,可是它只承受Birds。
假如利用注解,该接口看起来像上面如许:
  1. InterfaceIEnumerable(OfOutT)InterfaceIWriter(OfInT)
复制代码
这是针对VB编写的,它也能够用在C#上。
  1. interfaceIEnumerable<outT>interfaceIWriter<inT>
复制代码
不幸的是,这类语法其实不能间接使用在年夜多半罕见的场景中。好比IList(OfT),当传给一个向汇合中写进的办法时,T应当是In范例。可是当传给一个从汇合中读取的办法时,T应当是Out范例。也许这里应当针对IList创立一个基类,该类会将承受T与前往T的办法辨别开来。
追溯已往,C#和VB都撑持数组协变(out/IEnumerable情形),只管在逆变的情形下这会招致运转时毛病(in/IWriter情形)。如许做的目标是使C#更兼容于Java。年夜多半人都以为这是一个欠好的计划,可是如今却没法改动了。
检察英文原文:CovarianceandContravariancein.NETGenerics
来自:http://www.infoq.com/cn/news/2008/08/GenericVariance
语言是不是不是最重要的?
不帅 该用户已被删除
沙发
发表于 2015-1-19 21:50:27 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
飘飘悠悠 该用户已被删除
板凳
 楼主| 发表于 2015-1-24 22:11:10 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
精灵巫婆 该用户已被删除
地板
发表于 2015-1-25 18:36:33 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
5#
发表于 2015-1-31 22:27:36 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
乐观 该用户已被删除
6#
发表于 2015-2-1 18:23:17 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-6 03:14:41 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
冷月葬花魂 该用户已被删除
8#
发表于 2015-2-6 17:32:24 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
小女巫 该用户已被删除
9#
发表于 2015-2-9 03:54:28 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
若天明 该用户已被删除
10#
发表于 2015-2-16 22:22:12 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
山那边是海 该用户已被删除
11#
发表于 2015-3-8 15:53:30 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
简单生活 该用户已被删除
12#
发表于 2015-3-13 04:08:14 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
金色的骷髅 该用户已被删除
13#
发表于 2015-3-20 11:45:37 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
蒙在股里 该用户已被删除
14#
发表于 2015-4-12 15:38:50 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-13 14:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表