仓酷云

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

[学习教程] ASP.NET教程之口语C#:特征仓酷云

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

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

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

x
效率会有不少的变化。而实际上net网页编程是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。系列文章索引:《口语C#
起首要说的是,大概一些刚打仗C#的伴侣经常简单把属性(Property)跟特征(Attribute)弄搅浑,实在这是两种分歧的工具。属性就是面向对象头脑里所说的封装在类内里的数据字段,其情势为:
  1. 1:publicclassHumanBase
复制代码
  1. 2:{
复制代码
  1. 3:publicstringName{get;set;}
复制代码
  1. 4:publicintAge{get;set;}
复制代码
  1. 5:publicintGender{get;set;}
复制代码
  1. 6:}
复制代码
在HumanBase这个类里呈现的字段都叫属性(Property),而特征(Attribute)又是如何的呢?
  1. 1:[Serializable]
复制代码
  1. 2:publicclassHumanBase
复制代码
  1. 3:{
复制代码
  1. 4:publicstringName{get;set;}
复制代码
  1. 2:{0
复制代码
  1. 2:{1
复制代码
  1. 2:{2
复制代码
复杂地讲,我们在HumanBase类声明的上一行加了一个[Serializable],这就是特征(Attribute),它暗示HumanBase是能够被序列化的,这关于收集传输是很主要的,不外你不必忧虑怎样往了解它,怎样了解就是我们上面要切磋的。
C#的特征能够使用于各类范例和成员。后面的例子将特征用在类上就能够被称之为“类特征”,同理,假如是加在办法声明后面的就叫办法特征。不管它们被用在那里,不管它们之间有甚么区分,特征的最次要目标就是自形貌。而且由于特征是能够由本人定制的,而不单单范围于.NET供应的那几个现成的,因而给C#程序开辟带来了相称年夜的天真性和便当。
我们仍是借用生存中的例子来先容C#的特征机制吧。
假定有一天你往坐飞机,你就必需提早往机场登机处换登机牌。登机牌就是一张纸,下面写着哪趟航班、由那里飞往那里和你的名字、坐位号等等信息,实在,这就是特征。它不必要你心理上包括这些属性(人类呈现那会儿还没飞机呢),就像下面的HumanBase类没有IsSerializable如许的属性,特征只必要在类或办法必要的时分加上往就好了,就像你不老是在天上飞一样。
当我们想晓得HumanBase是否是可序列化的,能够经由过程:
  1. 2:{3
复制代码
  1. 2:{
复制代码
  1. 2:{5
复制代码
  1. 2:{6
复制代码
  1. 2:{7
复制代码
  1. 6:}
复制代码
拿到了登机牌,就意味着你能够正当地登机腾飞了。但此时你还不晓得你要坐的飞机停在那里,不必忧虑,地勤职员会开车送你已往,可是他怎样晓得你是哪趟航班的呢?明显仍是经由过程你手中的登机牌。以是,特征最年夜的特性就是自形貌。
既然是起到形貌的感化,那目标就是在于限制。就比如地勤不会把你任意拉到一架飞机跟前就扔上往了事,由于标签上的申明信息就是起到限制的感化,限制了目标地、搭客和航班,任何不对都被视为非常。假如后面的HumanBase不加上Serializable特征就不克不及在收集上传输。
我们在顺带来先容一下办法特征,先给HumanProperty加上一个Run办法:
  1. 1:[Serializable]
复制代码
  1. 3:publicstringName{get;set;}0
复制代码
  1. 3:{
复制代码
  1. 4:publicstringName{get;set;}
复制代码
  1. 2:{0
复制代码
  1. 2:{1
复制代码
  1. 3:publicstringName{get;set;}5
复制代码
  1. 3:publicstringName{get;set;}6
复制代码
  1. 3:publicstringName{get;set;}7
复制代码
  1. 3:publicstringName{get;set;}8
复制代码
  1. 3:publicstringName{get;set;}9
复制代码
  1. 4:publicintAge{get;set;}0
复制代码
只需是个四肢健全、身材安康的人就能够跑步,那这么说,跑步就是有条件前提的,最少是四肢健全,身材安康。因而可知,残疾人和老年人假如跑步就会出成绩。假定一个HumanBase的对象代表的是一名耄耋白叟,假如让他当刘翔的陪练,那就间接光彩了。怎样制止如许的情形呢,我们能够在Run办法中加一段逻辑代码,先判别Age巨细,假如小于2或年夜于60间接抛非常,可是2-60岁之间也得用Switch来分岁数阶段地判别speed参数是不是符合,那末逻辑就相称痴肥。简而言之,怎样用特征暗示一个办法不克不及被利用呢?OK,herewego:
  1. 4:publicintAge{get;set;}1
复制代码
  1. 4:publicintAge{get;set;}2
复制代码
  1. 3:{
复制代码
  1. 4:publicintAge{get;set;}4
复制代码
  1. 4:publicintAge{get;set;}5
复制代码
下面大抵先容了一下特征的利用与感化,接上去我们要向人人展现的是怎样经由过程自界说特征来进步程序的天真性,假如特征机制仅仅能利用.NET供应的那几种特征,不就太不外瘾了么。
起首,特征也是类。分歧于别的类的是,特征都必需承继自System.Attribute类,不然编译器怎样晓得谁是特征谁是一般类呢。当编译器检测到一个类是特征的时分,它会辨认出个中的信息并寄存在元数据傍边,仅此罢了,编译器其实不体贴特征说了些甚么,特征也不会对编译器起就任何感化,正如航空公司其实不体贴每一个箱子要往那里,只要箱子的仆人和搬运工才会往体贴这些细节。假定我们如今就是航空公司的办理职员,必要计划出后面提到的登机牌,那末很复杂,我们先看看最次要的信息有哪些:
  1. 4:publicintAge{get;set;}6
复制代码
  1. 2:{
复制代码
  1. 4:publicintAge{get;set;}8
复制代码
  1. 4:publicintAge{get;set;}9
复制代码
  1. 5:publicintGender{get;set;}0
复制代码
  1. 5:publicintGender{get;set;}1
复制代码
  1. 5:publicintGender{get;set;}2
复制代码
  1. 5:publicintGender{get;set;}3
复制代码
  1. 5:publicintGender{get;set;}4
复制代码
我们复杂枚举这些属性作为航空公司登机牌上的信息,用法和后面的一样,贴到HumanBase上就好了,申明这人具有登机资历。这里要复杂提一下,你大概已注重到了,在利用BoardingCheckAttribute的时分已把Attribute省略失落了,不必忧虑,如许做是对的,由于编译器默许会本人加上然后查找这个属性类的。哦,等一下,我俄然想起来他该登哪架飞机呢?明显,在这类需求下,我们的特征还没有起到应有的感化,我们还的做点儿事情,不然搭客面临一张空缺的机票必定会很渺茫。
因而,我们必需给这个特征加上机关函数,由于它不单单暗示登机的资历,还必需包括一些需要的信息才行:
  1. 5:publicintGender{get;set;}5
复制代码
  1. 2:{
复制代码
  1. 5:publicintGender{get;set;}7
复制代码
  1. 5:publicintGender{get;set;}8
复制代码
  1. 5:publicintGender{get;set;}9
复制代码
  1. 6:}0
复制代码
  1. 6:}1
复制代码
  1. 6:}2
复制代码
  1. 5:publicintGender{get;set;}4
复制代码
OK,我们的搭客就能够拿到一张正式的登机牌登机了,haveagoodflight!
  1. 2:{3
复制代码
  1. 2:{
复制代码
  1. 6:}6
复制代码
  1. 6:}7
复制代码
  1. 6:}8
复制代码
  1. 6:}9
复制代码
  1. 1:[Serializable]0
复制代码
  1. 1:[Serializable]1
复制代码
  1. 3:publicstringName{get;set;}7
复制代码
  1. 1:[Serializable]3
复制代码
  1. 1:[Serializable]4
复制代码
  1. 1:[Serializable]5
复制代码
  1. 1:[Serializable]6
复制代码
  1. 1:[Serializable]7
复制代码
  1. 1:[Serializable]8
复制代码
  1. 1:[Serializable]9
复制代码
  1. 2:publicclassHumanBase0
复制代码
  1. 2:publicclassHumanBase1
复制代码
  1. 2:publicclassHumanBase2
复制代码
  1. 2:publicclassHumanBase3
复制代码
  1. 2:publicclassHumanBase4
复制代码
  1. 2:publicclassHumanBase5
复制代码
  1. 2:publicclassHumanBase6
复制代码
  1. 2:publicclassHumanBase7
复制代码
  1. 2:publicclassHumanBase8
复制代码
  1. 2:publicclassHumanBase9
复制代码
  1. 3:{0
复制代码
  1. 3:{1
复制代码
来自:特征
我实在想不明白net网页编程的机制,为什么非要那么蛋疼,在同一个平台下重复编译。
透明 该用户已被删除
沙发
发表于 2015-1-21 07:45:12 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
分手快乐 该用户已被删除
板凳
发表于 2015-1-28 05:39:38 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
金色的骷髅 该用户已被删除
地板
发表于 2015-1-28 17:12:07 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
小女巫 该用户已被删除
5#
发表于 2015-2-5 15:26:40 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
小魔女 该用户已被删除
6#
发表于 2015-2-12 13:40:20 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
变相怪杰 该用户已被删除
7#
发表于 2015-2-13 22:00:37 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
小妖女 该用户已被删除
8#
发表于 2015-2-28 22:31:33 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
乐观 该用户已被删除
9#
发表于 2015-3-10 09:04:50 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
活着的死人 该用户已被删除
10#
 楼主| 发表于 2015-3-17 06:10:11 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
冷月葬花魂 该用户已被删除
11#
发表于 2015-3-23 22:37:31 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 16:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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