惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
GbyAI
GbyAI
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
P
Proofpoint News Feed
The Cloudflare Blog
H
Help Net Security
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
量子位
博客园 - 聂微东
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
月光博客
月光博客

博客园 - 一麦

GridView的增删改查和分页 - 一麦 - 博客园 团队开发之环境搭建 .Net下SqlServer命名规范 XXX公司CRM项目开发日志 Coolite Toolkit学习笔记 LINQ新特性简介及入门教程 反射学习 常用正则表达式 正则表达式基本用法 正则表达式基础 页面生命周期小结 设计模式小结 Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一) FileStream读写文件【StreamWriter 和 StreamReader】 .NET常用集合类 面向对象点滴 C#基础点滴 全新对待.net---一次全面的旅程 委托和事件--一直以来的痛
3.x新特性
一麦 · 2009-04-23 · via 博客园 - 一麦


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