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

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

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

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

大家应该都懂的

int[] array = { 1, 2, 3 }; Point point = new Point { X = 0, Y = 0 };

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

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

例子 var stringBuilder = new StringBuilder();

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

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

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

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

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

但是能简化很多代码

举一个极端的例子

System.Collections.Generic.List a = new System.Collections.Generic.List();//多可怕

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

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

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

var student = new { sex = "male", grade = 8 };

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

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

var t = new Thread(() => { //做些事情 });

传参数的时候这么写 var t = new Thread(o => { //做些事情 });

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

    delegate void delegateA(string msg);

    static void Main(string[] args) {

        delegateA dele = delegate(string msg)

        {

            Console.WriteLine(msg);

        };

        dele("123");

        Console.ReadKey();

   }

利用()?:简化求值

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

输出是4

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

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

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

还有一些 想起来再更

posted @ 2014-06-01 22:51  fuis  阅读(423)  评论(0)    收藏  举报