在上一篇“《ASP.NET MVC企业级实战》(一)MVC开发前奏”中记录了作者介绍的一些比较实用的VS使用方法以及C#2.0中添加的新特性。本篇继续大概了解之后版本的一些新特性。

 

一、C#3.0/3.5新特性

a)自动属性

属性的目的是为了封装字段和控制对字段的读写权限,使用自动属性可以用类似public int ID{get;set;}这样的方式简化属性的实现,自动生成对应的字段。这种写法增加了编译器的工作量,但不会对运行效率产生影响。

b)隐式类型推断var

使用var声明一个对象时,编译器会自动根据赋值语句推断这个变量的类型。var还可用于匿名类的声明。用var声明变量时有一些限制:

被声明的变量必须是一个局部变量,而不是静态或实例字段;

变量必须在声明的同时被初始化;

初始化的对象不能是一个匿名函数;

变量声明后类型不能更改;

赋值的数据类型必须是可以在编译时确定的类型。

c)对象集合初始化器

分为对象初始化、集合初始化两种:

对象初始化时可以这样写:User user=new User{Id=1,Name=””};

集合初始化时的写法可以为:User users=new List<Users>{new User{Id=1,Name=”1”},newUser{Id=2,Name=”2”}};

d)匿名类

使用匿名类可以将一组只读属性封装到对象中,匿名对象可以用var来声明。例如var user=new User{Id=1,Name=””};这种写法方便灵活,但要避免滥用,否则会造成代码重复、降低可维护性等问题。

e)扩展方法

基本使用方法为:

这里被扩展的类型为string,则string前需要加this,而且所在的类必须为静态的。编译器在碰到str.WriteSelf这样的写法时,首先会寻找名称为WriteSelf的实例方法,没有找到后就认为是一个扩展方法,然后就在当前相关的命名空间中寻找匹配的扩展方法。

扩展方法至少需要有一个参数,而且第一个参数不能有任何其他修饰符(ref/out),也不能为指针类型编写扩展方法。

f)系统内置委托

系统内置委托如Func、Action、Predicate、Comparison等,可以被方便得使用,而不必在使用前自己声明签名。

Action有16个重载,参数个数从1-16。

Func有17个重载,代表一类有若干(0~16个)输入参数,1个输出的签名。

Predicate委托如下,用来判断输入参数是否符合某种条件,条件要自己定,返回值就是bool了。

Comparison委托用来比较两个参数。

学习资料:ASP.NET MVC  企业级实战 by 邹琼俊

《ASP.NET MVC企业实战》(二) MVC开发前奏的更多相关文章

  1. 《ASP.NET MVC企业实战》(三)MVC开发前奏

    ​ 在上一篇“<ASP.NET MVC企业级实战>(二)MVC开发前奏”中跟随作者大概了解了一些C#3.0和3.5中的新特性.本篇继续以这样的方式来学习C#中的一些特性.   一.C#3. ...

  2. 《ASP.NET MVC企业实战》(一) MVC开发前奏

    一.工具和方法 学到了一些没用过的工具和方法: a)删除多余的using指令并排序:一个类头部的using一般会有很多用不到的,在完成类的编写后,可以右键选择”组织using”来删除没用的using并 ...

  3. asp.net mvc企业实战技能汇总

  4. PHP之MVC项目实战(二)

    本文主要包括以下内容 GD库图片操作 利用GD库实现验证码 文件上传 缩略图 水印 GD库图片操作 <?php $img = imagecreatetruecolor(500, 300); // ...

  5. 企业微信二次开发之-如何获取secret序列号

    第一步:登录JEEWX后台,配置微信企业号账号信息(企业号.企业号应用) [1].配置企业微信信息 参数对应位置参考如下: [2].配置应用信息 必须四字段: 第二步: 登录企业微信后台,配置企业号应 ...

  6. ASP.NET MVC企业级实战目录

    电子书样稿 (关注最新进度,请加QQ群:161436236) ASP.NET MVC企业实战第1章 MVC开发前奏.pdf ASP.NET MVC企业实战第10章 站内搜索.pdf 已经好长一段时间没 ...

  7. [PC]PHPCMS二次开发指南(上)

    ------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...

  8. SilverlightOA源代码(可用于企业级Silverlight项目的二次开发,长年有效)

    Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...

  9. Silverlight管理系统源代码(SilverlightOAFlame开发框架主要提供二次开发)

    Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...

随机推荐

  1. MySQL学习笔记1(增删查改)

    创建表: /* 创建数据库 create database 数据库名; */ CREATE DATABASE mybase; /* 使用数据库 use 数据库名 */ USE mybase; /* 创 ...

  2. 干货—MySQL常见的面试题+索引原理分析!

    目录 MySQL索引的本质 MySQL索引的底层原理 MySQL索引的实战经验 面试 问:数据库中最常见的慢查询优化方式是什么? 同学A:加索引. 问:为什么加索引能优化慢查询? 同学A:...不知道 ...

  3. C# winform嵌入unity3D

    最近做项目需要winform嵌入unity的功能,由于完全没接触过这类嵌入的于是在网上搜,有一种方法是UnityWebPlayer插件,也开始琢磨了一段时间,不过一会发现在5.4版本以后这个东西就被淘 ...

  4. 关于微信JS SDK接口wx.previewImage预览接口的使用

    然后后之前的项目,突然往微信上迁移了,一些微信的接口没怎么用过,比较陌生,这次的功能是想调用微信的接口,实现图片放大的功能, 就找到官方文档:http://qydev.weixin.qq.com/wi ...

  5. JConsole观察分析Java程序的运行状态

    Java 自带性能监控工具:监视和管理控制台 jconsole,它可以提供 Java 某个进程的内存.线程.类加载.jvm 概要以及 MBean 等的实时信息. 通过Java SE Developme ...

  6. 解决vue路由history模式刷新后404的问题

    server { listen ;#默认端口是80,如果端口没被占用可以不用修改 server_name localhost; root E:/vue/my_project/dist;#vue项目的打 ...

  7. underscore.js源码解析【集合】

    // Collection Functions // -------------------- // The cornerstone, an `each` implementation, aka `f ...

  8. nginx ngx_http_sub_module使用

    ngx_http_sub_module模块是一个过滤器,它修改网站响应内容中的字符串,比如你想把响应内容中的‘iuwai’全部替换成‘aaaaa‘,这个模块已经内置在nginx中,但是默认未安装,需要 ...

  9. Spring Cloud Gateway入门

    1.什么是Spring Cloud GatewaySpring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技 ...

  10. ARM64 Linux kernel virtual address space

    墙外通道:http://thinkiii.blogspot.com/2014/02/arm64-linux-kernel-virtual-address-space.html Now let's ta ...