zoukankan      html  css  js  c++  java
  • 3.x新特性


    3.x特性主要是编程语言层面的,只是编译器在编译的时候给我们添加了许多的代码,其编译后的IL和2.0的没有什么不一样。
    3.x的特性有:匿名类型,扩展方法,匿名方法(2.0)Lambda表达式,自动实现字段,对象初始化和集合初始化.

    3.0的所有新特性,仅仅是在其编译器上增加了功能,使我们的代码更加的简洁,特性下写的代码编译成中间语言和2.0没有什么差异,其CLR仍然是2.0的。
    也就是说:C#3.x仅仅是基于.NET Programming Language,而不是基于.NET Framework的

    1. Anonymous Type匿名类型:不需要既定类型的情况下使用其对象实例。个人认识像是使用数据结构。
    var v = new { ID = Guid.NewGuid(), Name = "tye" }; // 匿名方法的使用


    .net 3.0的新特性---匿名方法,允许内联申明方法而无需使用代理函数,而Lambda表达式能使用更简洁的代码完成相同的功能。
    2. Anonymous Method匿名方法:匿名方法允许我们以一种“内联”的方式来编写方法代码,
    将代码直接与委托实例相关联,从而使得委托实例化的工作更加直观和方便。
    addbutton.click += delegate
    {
       listbox.items.add(textbox.text);
    }

    addbutton.click += delegate(object sender,eventargs e)
     {
        messagebox.show((button)sender).text);
     }
    delegate void mydelegate();
     mydelegate d = delegate
     {
        ...
        return;
     }

     delegate int mydelegate();
     mydelegate d = delegate
     {
        ...
        return 100;
     }

    3.Lambda表达式
    class Program
        {
            static void Main()
            {
                Function<int, bool> function3 = x => x > 0;
                function3(20);
            }
        }

        delegate TResult Function<TArgs, TResult>(TArgs args);


    3.x特性例子,除了扩展方法外
    class AnonymousTest
        {
            public void Anonymous()
            {
                var v = new { ID = Guid.NewGuid(), Name = "tye" }; // 匿名类型


                MyDelegate myDelegate = new MyDelegate(Method); // 命名委托
                myDelegate(3, "hello");

                MyDelegate myDelegate2 = delegate(int x, string y) //匿名方法的使用
                {
                    Console.WriteLine(x + "," + y);
                };
                myDelegate2(5, "crj");

                MyDelegate myDelegate3 = (x, y) => { Console.WriteLine(x + y);  }; //Lambda表达式
            }

            public void Method(int x, string y)
            {
                Console.WriteLine(x + "," + y);

                var names = list.Where(name => name.EndsWith("t")); //LINQ
            }

            public double X { get; set; } //自动实现属性
            public double Y { get; set; }

            AnonymousTest at = new AnonymousTest { X = 1, Y = 3 }; // 对象初始化

            List<string> list = new List<string> { "tye", "crj", "hkb" }; //集合初始化

  • 相关阅读:
    swoole多进程操作
    LinUX系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展
    php 访问用友u8数据
    C++/CLI剪辑
    托管代码中调用c++本地代码
    非托管代码中调用托管代码
    Resharper快捷键使用
    Unity3d简便的声音管理方案
    QT离线安装包
    Winform中使用Reactivex代替BeginInvoke/Invoke来更新UI数据
  • 原文地址:https://www.cnblogs.com/im/p/1442292.html
Copyright © 2011-2022 走看看