ASP.NET MVC—1、前期知识储备(C#3.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
时间: 2024-10-03 22:40:01

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

接口测试学习入门(1)--前期知识储备

接口测试前必需知识了解:1.接口测试的原理: 无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程. 2.前期知识储备2.1 http知识了解(详见 http://www.blogjava.net/zjusuyong/articles/304788.html 写的很棒!) http端口号 80,不输入默认就是, https端口号 443,基于SSL https加密原理:

ASP.NET MVC 5 - 给电影表和模型添加新字段

原文:ASP.NET MVC 5 - 给电影表和模型添加新字段 在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的.如果他们不是同步的,Entity Framework将抛出一个错误.这非常方便的在

ASP.NET4.0新特性

原文:ASP.NET4.0新特性 在以前试用VS2010的时候已经关注到它在Web开发支持上的一些变化了,为此我还专门做了一个ppt,当初是计划在4月12日那天讲的,结果因为莫名其妙的原因导致没有语音以致放弃在LiveMeeting上的这次讲课,也导致了本篇的产生. 新增了项目模板 在创建Web项目时可以看到增加了更多的Web项目模板在VS2008中对应的情况如下: 在新模板中有如下改进:基础MemberShip功能.在大多数网站和应用程序中需要进行认证,因此在新模板中增加了认证功能使得用户能在

微软讲座视频: 下一代vNext平台:ASP.NET vNext与MVC6,WebAPI 3.0 新特性 下载

 微软下一代平台vNext: .NET 5.0.ASP.NET vNext与MVC6,WebAPI 3.0 新特性 录像视频下载 http://t.cn/RPYhcuG  微软与开源实战训练营QQ群 203822816 微软MSDN俱乐部QQ群 29754721, 微软MSDN特邀讲师:徐雷  Frank Xu Lei倾力打造!新浪微博:http://weibo.com/frankxulei  @@老徐FrankXuLei 系统讲解NET vNext 新特性ASP.NET vNext新特性,

微软讲座视频: 微软下一代vNext平台:ASP.NET vNext与MVC6,WebAPI 3.0 新特性

微软下一代平台vNext: .NET 5.0.ASP.NET vNext与MVC6,WebAPI 3.0 新特性 录像视频下载 http://t.cn/RPYhcuG  微软与开源实战训练营QQ群 203822816 微软MSDN俱乐部QQ群 29754721, 微软MSDN特邀讲师:徐雷  Frank Xu Lei倾力打造!新浪微博:http://weibo.com/frankxulei  @@老徐FrankXuLei 讲课系统NET vNext 新特性ASP.NET vNext新特性, MV

ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)

前言 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.. 今天这篇也不是讲Core的 前面写了C#开发移动应用系列  就第一篇和最后一篇上了最多推荐 - -  也许大家确实不看好吧.. 算了..废话不多说.开始今天的东西吧.. 本篇文章不讲为何我们要用IOC..只讲Autofac使用中的一些小心得 正文 1.基本注入 首先我们要构造一个容器,代码如下: //第一步: 构造一个Auto

Java基础知识总结之1.8新特性lambda表达式

函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.lang.Runnable和 java.util.Comparator都是典型的函数式接口.java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断, 但 最好在接口上使用注解@FunctionalInterface进

全网最全ASP.NET MVC 教程汇总

全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go! 1. Why :为什么需要ASP.NET MVC 本章主要为大家汇总了为什么学习Asp.net MV

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) 前言:这篇博客开始我们便一步一步的来实现这个权限系统的初步设计-框架搭建,首先我要说的是我们需要开发工具Visual Studio 2012或者10也行,其次是我们要有SQL Server数据库,如果是Visual Studio 2010的话,你还要安装MVC4的开发文件,这个是吗?我不记得了,谁可以回答我一下的,我一直用2012,都是集成