C# .net2.0中使用扩展方法和lambda表达式

虽然这两个东西都是C#3.0才有的语法
但是因为.net 2.0-3.5是同一个CLR版本 而扩展方法和λ表达式本身也是一种语法糖
所以 在.net2.0中能够使用上述语法 看上去就是”理所当然“了

当然 这需要一个较高版本的IDE支持
不过 vs10就足够了吧 或许08也可以 谁看到了可以尝试一下


使用lambda表达式

不用动任何手脚 直接用就是了

class Program
{
    static void Main(string[] args)
    {
        new System.Threading.Thread(() => { Console.WriteLine("2"); }).Start();
        Console.ReadKey();
    }
}

使用扩展方法

直接用就是了...才怪...你会收到一个编译错误 于是你需要做点手脚...
在程序中添加一个类 声明如下

namespace System.Runtime.CompilerServices
{
     public class ExtensionAttribute : Attribute { } 
}

好了 如下代码可以正常编译了 修改CLR版本 添加引用什么的见鬼去...

class Program
{
    static void Main(string[] args)
    {
        new System.Threading.Thread(() => "2".Print()).Start();
        Console.ReadKey();
    }
}

static class StringExtension
{
    public static void Print(this string str)
    {
        Console.WriteLine(str);
    }
}


同理 为了方便使用 还可以自己随缘添加Func<T> Action<T>系列 再不赘述


为什么要纠结于2.0版本?

- windows xp装机量还是很大 而xp连.net2.0都没有预装 部分A卡用户因为显卡催化剂才会在系统中部署.net framework 并且网上某个流传的.net安装包会被某数字卫士报毒
- win7才有3.5 而win8直接4.0 不手动安装的话连3.5都没 让xp用户下载.net3.5 200多M的安装包会吓到人家的
- 我们有飞信虚拟机可以确保依赖.net2.0的程序集可以绿色发布 虽然3.5也可以 不过会扩大发布包的容量 不美观

基于以上理由 我的程序通常都是依赖.net 4.0或者2.0的 很少使用其他版本
.net3.5的确添加了很多API 不过似乎我自身很少用到 大部分用到的场合都是在服务端 于是4.0就OK了 可能能想到的只有一个UTC时间的类在2.0没有提供

某种程度上3.5还真是一个尴尬的版本啊...

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页