您的位置:首页 > 编程语言 > C#

如何优雅地写代码——C#篇(1)

2014-06-01 22:51 190 查看
咳咳这应该是博客上的第一个系列文章会有比较丰富的讲解本文应该能帮助新手们从语法基础进阶到有能力简洁实现

话不多说现在开始上课先从简单的开始

数组的声明给集合赋初始值

大家应该都懂的

int[]array={1,2,3};Pointpoint=newPoint{X=0,Y=0};


二维数组的声明
int[][]i=newint[][]{};int[,]i=newint[,]{};//少了一点代码量:)


不得不说的是var关键字用上var可以少打很多字呢~~~

例子
varstringBuilder=newStringBuilder();


“那位同学,你有什么问题吗?”

“老师,这个var好像是动态类型唉,会不会影响性能啊?”

事实上使用var关键字并不会影响运行时性能

因为我们点击F5运行的一刹那编译器在编译时就自动确定了对象的类型

要说动态类型应该只有dynamic才是动态类型var其实是一个语法糖

但是能简化很多代码

举一个极端的例子

System.Collections.Generic.Lista=newSystem.Collections.Generic.List();//多可怕


不要说完全限定名不可能出现在实际的代码当中,可能当你要用一个类库这个类库只用一次并不需要添加using的时候就明白了

当然无论如何我还是推荐使用var关键字来简化声明变量的工作

然后是匿名类型一般只是在要用临时的简单的值类型会用到


varstudent=new{sex="male",grade=8};


就这样少了一个类文件真是爽呀

再比如lambda表达式当需要用小函数或者是一次性试用这个函数的时候用处就大了


vart=newThread(()=>{//做些事情});


传参数的时候这么写
vart=newThread(o=>{//做些事情});


匿名委托其实现在叫匿名方法(其实就是lambda)不过还是介绍一下


delegatevoiddelegateA(stringmsg);


staticvoidMain(string[]args){


delegateAdele=delegate(stringmsg)


{


Console.WriteLine(msg);


};


dele("123");


Console.ReadKey();


}


利用()?:简化求值


Console.WriteLine(((1>2)?3:4));


输出是4

还有什么呢让我再想想....

噢对了还有反射应用反射中的一个小方法就能有效解决抽象工厂模式带来的多工厂问题


varinstance=Assembly.LoadFrom("程序集的文件名或路径").CreateInstance("类名");


还有一些想起来再更
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: