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" }; //集合初始化

原文地址:https://www.cnblogs.com/im/p/1442292.html