仓酷云

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

[学习教程] ASP.NET网页设计《Effective C# 精华》摘选

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。  今天买了一本《EffectiveC#》,看了几个Item,固然没有现在读《EffectiveC++》时的那般震动,可是也劳绩很多。把个中的要点纪录于下,有些条目加上了本人的了解,权看成念书条记吧:-)

  Item1:AlwaysUsePropertiesInsteadofAccessibleDataMembers

  这个是地球人都晓得的条目了。你必要记着,属性是类的内部接口部分,而(大众)成员倒是外部完成。假如把外部完成表露给内部,关于今后类的完成变动长短常倒霉的。  Item2:Preferreadonlytoconst

  这个条目必要注重一下几点:

  (1)const在编译期产生感化,即编译器会将一切的const成员置换成对应的常量“值”。

  (2)即便援用其他程序会合的const成员,本程序会合也是硬编码了const成员的值。

  (3)readonly在运转期被评价,以是其功能比const稍差,可是天真性更高。

  (4)const的值必需在编译期决意,以是不克不及利用new为其赋值。

  (5)更新一个私有的const成员的值应被视为接口改动,而更新一个readonly变量的值可视为外部完成的改动。
  Item3:PrefertheisorasOperatorstoCasts

  (1)is或as称为“静态转换”,是实验性的,假如失利,不会抛出非常。尽量利用as操纵符。该机制利用元数据完乐成能。

  (2)Cast称为“强迫转换”,假如失利,则抛出非常--价值奋发。

  (3)is、as、Cast转换都不会挪用自界说的转换操纵符。

  (4)is能够判别一个object是不是为值范例,而as不可。

  (5)请注重Type.IsAssignableFrom()和Type.IsSubclassOf()办法,他们也是经常使用的“范例检测”手腕。注重,Type.IsSubclassOf()办法不撑持接口检测,而Type.IsAssignableFrom()撑持。
  Item4:UseConditionalAttributesInsteadof#if

  利用#if常(大概)招致功能成绩(如空办法挪用)和程序对#if/#endif块代码的依附成绩。

  (1)利用ConditionalAttributes润色的办法老是会被编译到方针程序会合,不管是Release或Debug。

  (2)假如前提不满意该ConditionalAttributes指定的前提,则编译器会疏忽一切对其润色的办法的挪用。

  (3)被ConditionalAttributes润色的办法必需前往void,这是有事理的。由于我们的程序运转不克不及依附被ConditionalAttributes润色的办法的前往值。不然,在分歧的前提下,我们的程序将体现出非我们希冀的不必举动。
  Item5:AlwaysProvideToString()

  关于这一点,我在以往的项目中早有体味。举个例子,已经我们必要把从数据库中掏出的Customer列表绑定到ComboBox,入手下手时我们计划Customer时并没有重写ToString()办法,以是我们要如许做:

//从数据库中挑出一切无效用户
stringwhereStr=string.Format("where{0}=1",Customer._IsValid);
Customer[]customers=(Customer[])DataEntrance.GetObjects(typeof(Customer),whereStr);
ArrayListcusNameList=newArrayList();
foreach(Customercusincustomers)
{
cusNameList.Add(string.Format("{0}{1}",cus.ID,cus.Name));
}
//绑定
this.comboBox1.DataSource=cusNameList;  假如为Customer重写ToString()办法,
#regionToString
publicoverridestringToString()
{
returnthis.ID.ToString()+""+this.Name.ToString();
}
#endregion  则只必要如许:
stringwhereStr=string.Format("where{0}=1",Customer._IsValid);
Customer[]customers=(Customer[])DataEntrance.GetObjects(typeof(Customer),whereStr);
this.comboBox1.DataSource=customers;  如许就烦琐了很多多少,并且如许做另有一个优点,好比,从ComboBox从拔取一个客户时,之前必要如许:
stringcusID=this.comboBox1.SelectedItem.ToString().Split()[0];
CustomerdesCus=null;
foreach(Customercusincustomers)
{
if(cus.ID=cusID)
{
desCus=cus;
break;
}
}
  如今,复杂多了,一行代码弄定。

CustomerdesCus=this.comboBox1.SelectedItemasCustomer;说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。
小魔女 该用户已被删除
沙发
发表于 2015-1-21 22:39:43 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
分手快乐 该用户已被删除
板凳
发表于 2015-1-30 22:48:07 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
深爱那片海 该用户已被删除
地板
发表于 2015-2-6 16:32:29 | 只看该作者
那么,ASP.Net有哪些改进呢?
再见西城 该用户已被删除
5#
发表于 2015-2-17 07:36:18 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
柔情似水 该用户已被删除
6#
发表于 2015-3-5 17:23:02 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
变相怪杰 该用户已被删除
7#
发表于 2015-3-12 11:05:01 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
因胸联盟 该用户已被删除
8#
发表于 2015-3-19 20:56:36 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 00:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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