ASP.NET网页设计《Effective C# 精华》摘选
说句实话,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();
CustomerdesCus=null;
foreach(Customercusincustomers)
{
if(cus.ID=cusID)
{
desCus=cus;
break;
}
}
如今,复杂多了,一行代码弄定。
CustomerdesCus=this.comboBox1.SelectedItemasCustomer;说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 那么,ASP.Net有哪些改进呢? ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
页:
[1]