浅谈C#的语法特性及杂七杂八 每当别人问起我某个C#的新语言特性的时候我总会说其实就是这么一回事他不过是一个语法糖没什么稀奇的你可以看一下Reflector反编译出来的代码。可是现在当我仔细思考之后发现其实语法糖更多地不仅仅是为了我们使用上的方便而且是代表了一种编程模式以及思维模式的转变。从最简单地说起我在之前的文章说过一点面向过程的语言的核心不在于函数而在于处理事情的过程而函数则完全是为了代码的规范以及可维护性才出现的。但是当我们把若干个函数整理成了我们的类库之后我们除了使用上方便之外更意味着我们需要提高我们的逻辑层次将原本的细粒度逻辑粗化。我看到了在winter-cn的文章中举了这样一个例子把大象放入冰箱分成几步第一第二第三Ivovy老大回复了这样一句话语言的发展是让这些都变成一步把大象装入冰箱。我非常赞同我认为这就是未来语言的发展方向。在我之前的文章《基于自然语言的软件工程与程序设计》中我谈到未来语言的发展方向是基于自然语言的编程还谈到了一种理想的状况就是会说话的人就会写程序。即使我们不把眼光放得这么远我认为只要了解业务逻辑的人就会编程这个是完全不过分的。接下来我们看一个在C# 3.0 中的关键字var。在之前很多人说var最大的作用是为了让懒的人可以不必去打字打出类型。其实我个人更认为当var关键字和我们强大的Visual Studio工具结合起来的时候就在倡导我们用一种团队思维的角度去看待问题。当我们调用底层提供给我们的接口或者使用其他类库返回给我们的方法时我们不需要了解他的具体类型我们只需要用var来得到该类型然后用强大的VS开发工具的智能感知去得到我们需要的属性或方法即可。至于像Lambda表达式所提倡的FP思维我就更不多说了。总之Firelong眼中说C#语言越来越臃肿的语言特性然后应该越来越从简我个人认为这不是在抹杀C#的进步更关键的是在抹杀一种编程思维的进步。2. 语言还是语言在语言产生之初语言之争似乎就从未停止。无论是C和C。还是Java与C#。从来都是各执一词然后难分胜负。我不是一个牛人无法像Jeffery Zhao一样来举出各种各样的理由来反对Java或者反对其他语言。至少在我目前的阶段来看我不是一个语言方面的攻击者。我只能从经济学的角度去分析每门语言每门流行的语言在市场上占有一定份额的语言必定有着他的优势所在否则他必定会被市场所淘汰。而每门语言也必然有着他的劣势和不适用性正是这样才催生了其他语言的发展从而产生一种平衡的关系。在这里我只说托管语言。从某种程度上至少从我目前的程度上我认为托管语言来开发桌面程序的确是不大合适的相对于C。在此强调我并没有过太多桌面程序开发的经验针对当前大多数的商业商品来说无论是旧版的飞信还是概念版的QQ采用托管语言无疑都是失败的而我们看大部分成熟的桌面程序还是采用C来开发这确实也能说明一定道理。而著名的《鬼泣4》采用C和C#做交互来共同开发也在一定程序上说明了C#在UI上的薄弱性。只是看新闻传说未经证实总之我个人认为不要轻易地去抨击某一门语言每门语言都有着他的适用性你的项目因为C#而失败只能说是你项目不该选择C#而不能说C#无法满足你的项目就说C#是失败的。这样的逻辑明显就是不对的。3. 语言与设计模式