码迷,mamicode.com
首页 > Windows程序 > 详细

ASP.NET MVC—1、前期知识储备(C#3.0新特性)

时间:2015-04-14 00:19:45      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

    在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特性将会大大的提高我们的开发效率,同时,在MVC项目中你将到处可以看到C#3.0新特性的身影。

C#3.0新特性

  • 自动属性
  • 隐式类型 var
  • 对象初始化器与集合初始化器
  • 匿名类
  • 扩展方法
  • Lambda表达式

自动属性

这个概念很简单,其简化了我们在.NET的时候手写一堆私有成员+属性的编程方式,我们只需要使用如下方式声明一个属性,编译器会自动生成所需的成员变量。

 基本用法:

 public class User
     {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public Address Address { get; set; }
     }

在C#3.0之前,我们是这样来实现属性的:

 private int id;
        public int Id
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }
        }

隐式推断类型

这个名称可能对你很陌生,但是var这个关键字应该都用过,在C#中使用var声明一个对象时,编译器会自动根据其赋值语句推断这个局部变量的类型。赋值以后,这个变量的类型也就确定而不可以再进行更改。另外var关键字也用于匿名类的声明。

应用场合:var主要用途是表示一个LINQ查询的结果。这个结果可能是ObjectQuery<>或IQueryable<>类型的对象,也可能是一个简单的实体类型的对象。这时使用var声明这个对象可以节省很多代码书写上的时间。

var customer = new Customer();

对象初始化器

在.NET2.0中构造一个对象的方法一是提供一个重载的构造函数,二是用默认的构造函数生成一个对象,然后对其属性进行赋值。在.NET3.5/C#3.0中我们有一种更好的方式来进行对象的初始化。那就是使用对象初始化器。这个特性也是匿名类的一个基础,所以放在匿名类之前介绍。

基本用法:

  User user = new User { Id = 1, Name = "Zouqj", Age = 26 };

匿名类

有了前文初始化器的介绍,匿名类就很简单了。我们可以使用new { object initializer }或new[]{ object, …}来初始化一个匿名类或不确定类型的数组。匿名类的对象需要使用var关键字声明。示例代码:

var p = new { Id = 1, Name = " Zouqj ", Age = 26 };

应用场合:

    当直接使用select new { object initializer }这样的语法就是将一个LINQ查询的结果返回到一个匿名类中。

Lambda表达式

     Lambda表达式的本质就是匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。

  delegate int AddDel(int a,int b); //定义一个委托
            #region lambda

            AddDel fun = delegate(int a, int b) { return a + b; }; //匿名函数
            //Console.WriteLine(fun(1, 3));
            //lambda  参数类型可以进行隐式推断,可以省略类型 lambda本质就是匿名函数
            AddDel funLambda = ( a,  b) => a + b;
            List<string> strs = new List<string>() {     "1","2","3"
                                };

            var temp = strs.FindAll(s => int.Parse(s) > 1);
            foreach (var item in temp)
            {
                Console.WriteLine(item);
            }
            //Console.WriteLine(funLambda(1,3));

            #endregion

ASP.NET MVC—1、前期知识储备(C#3.0新特性)

标签:

原文地址:http://www.cnblogs.com/jiekzou/p/4423632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!