C#语法糖(CsharpSyntacticsugar)大汇总.doc_第1页
C#语法糖(CsharpSyntacticsugar)大汇总.doc_第2页
C#语法糖(CsharpSyntacticsugar)大汇总.doc_第3页
C#语法糖(CsharpSyntacticsugar)大汇总.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。这让java开发人员羡慕不已,呵呵。1 经过简化的Property早些时候我们这样声明Property01privatestring_myName;0203publicstringMyName04050607getreturn_myName; 0809set _myName = value; 1011千篇一律的这样声明,没有多大意义,于是C#的设计人员将这个千篇一律的工作交给了编译器帮我们做了,我们现在可以这样声明1publicstringMyName get;set; 当然他不会牺牲灵活性,我们可以单独给get或者set设定访问限制符,例如1publicstringMyName get;protectedinternalset; 2 经过两次变异的委托写法在.net 1.1时我们不得不声明方法后才在委托中使用,在.net 2.0之后我们可以使用匿名委托,他不单可以简化写法,还可以在匿名委托中访问范围内的变量;再后来拉姆达表达式来了,写法就更简便了。01classMyClass0203publicdelegatevoidDoSomething(inta);0405/定义方法委托06privatevoidDoIt(inta) 07Console.WriteLine(a);080910privatevoidHowtoDo(DoSomething doMethod,inta) 11doMethod(a);121314publicstaticvoidMain(string args) 15MyClass mc =newMyClass();16/调用定义的方法委托17mc.HowtoDo(newDoSomething(mc.DoIt), 10);18intx = 10;19/使用匿名委托20mc.HowtoDo(delegate(inta)21Console.WriteLine(a + x);22,10);2324/使用lamda表达式25mc.HowtoDo(a=Console.WriteLine(a+x),10);2627Console.ReadLine();28293 集合类的声明之前我们声明一个List并给list赋初始值,必须得这么写:1List list =newList();2list.Add(a一);3list.Add(b二);4list.Add(c三);现在不需要了,直接写就可以了1List list =newList 2def,OK3;4 集合类各个项的操作我们为了逐个处理集合中的项,需要这么写:1foreach(stringiteminlist)23Console.WriteLine(item);4现在不需要了,这样就可以了1list.ForEach(a = Console.WriteLine(a);代码是不是清爽了很多。5 using = try finally为了在使用完毕时释放资源,我们经常要用using,using实质上就是try fiannaly的一个语法糖而已。例如1StreamWriter sw =null;2try34sw =newStreamWriter(d:abc.txt);5sw.WriteLine(test);67finally8if(sw!=null) sw.Dispose();9上面的代码可以简化为:1using(var sw =newStreamWriter(d:abc.txt) 2sw.WriteLine(test);36 可爱的varvar的意义时不必写声明的类型,编译器会根据后面对var的赋值判断它的类型,var的类型一旦确认就不能再改变,它只能作为局部变量使用,不能用做字段也不能用做参数声明。例如:1var writer =newStreamWriter(path);1for(var i=0;i 9?b.ToString():”0”+b;新宝宝两个问号 ?,它表示左边的变量如果为null则值为右边的变量,否则就是左边的变量值1stringa =null;2var b = a?”;8 类型实例化的语法糖1publicclassAbc23publicintID get;set; 45publicstringName get;set; 67publicstringUrl get;set; 8我们没有为上面的类声明构造函数,但是我们可以像下面的形式来实例化它1publicstaticvoidMain(string args) 2var abc =newAbc3ID=1,4Name=yukaizhao,5Url=/6;79 传说中的扩展方法在c#3.5时引入了扩展方法,我们可以在不修改类源码的情况下给类增加实例方法,这个很有意义。它的实质也是一种语法糖的实现例如我们给String类扩展一个IsNumber的方法:01publicstaticclassStringExt 02staticprivateRegex regexNumber =newRegex(d+);03staticpublicboolIsNumber(thisstringinput)0405if(string.IsNullOrEmpty(input)0607returnfalse;0809returnregexNumber.IsMatch(input);1011我们可以在String实例上调用这个方法了1var abc = “123”;2var isNumber = abs.IsNumber();10使用匿名类1var a =new2ID = 1,Name=”yukaizhao”,BlogUrl=”/yukaizhao/”3;匿名类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论