《ASP.NET MVC企业实战》(二) MVC开发前奏
在上一篇“《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开发前奏的更多相关文章
- 《ASP.NET MVC企业实战》(三)MVC开发前奏
在上一篇“<ASP.NET MVC企业级实战>(二)MVC开发前奏”中跟随作者大概了解了一些C#3.0和3.5中的新特性.本篇继续以这样的方式来学习C#中的一些特性. 一.C#3. ...
- 《ASP.NET MVC企业实战》(一) MVC开发前奏
一.工具和方法 学到了一些没用过的工具和方法: a)删除多余的using指令并排序:一个类头部的using一般会有很多用不到的,在完成类的编写后,可以右键选择”组织using”来删除没用的using并 ...
- asp.net mvc企业实战技能汇总
- PHP之MVC项目实战(二)
本文主要包括以下内容 GD库图片操作 利用GD库实现验证码 文件上传 缩略图 水印 GD库图片操作 <?php $img = imagecreatetruecolor(500, 300); // ...
- 企业微信二次开发之-如何获取secret序列号
第一步:登录JEEWX后台,配置微信企业号账号信息(企业号.企业号应用) [1].配置企业微信信息 参数对应位置参考如下: [2].配置应用信息 必须四字段: 第二步: 登录企业微信后台,配置企业号应 ...
- ASP.NET MVC企业级实战目录
电子书样稿 (关注最新进度,请加QQ群:161436236) ASP.NET MVC企业实战第1章 MVC开发前奏.pdf ASP.NET MVC企业实战第10章 站内搜索.pdf 已经好长一段时间没 ...
- [PC]PHPCMS二次开发指南(上)
------------------------------------------------------------------------------------- PHPCMS本身功能已经很完 ...
- SilverlightOA源代码(可用于企业级Silverlight项目的二次开发,长年有效)
Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...
- Silverlight管理系统源代码(SilverlightOAFlame开发框架主要提供二次开发)
Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...
随机推荐
- Java学习笔记51(综合项目:家庭记账系统)
javaEE的开发模式 1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model ...
- spring boot 下 thymeleaf 配置
1. thymeleaf 配置参数 [参考文章]:spring-boot-starter-thymeleaf 避坑指南 #<!-- 关闭thymeleaf缓存 开发时使用 否则没有实时画面--& ...
- mongodb4.0.2 复制集主从部署
介绍 复制集(Replica Sets),是一个基于主/从复制机制的复制功能,进行同一数据的异步同步,从而使多台机器拥有同一数据的都多个副本,由于有自动故障转移和恢复特性,当主库宕机时不需要用户干预的 ...
- Java 架构师+高并发+性能优化+Spring boot大型分布式项目实战
视频课程内容包含: 高级 Java 架构师包含:Spring boot.Spring cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.Zer ...
- linux中crontab的使用方法
crontab参数说明: -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv V ...
- Eureka安全认证
Eureka 服务加入安全认证只需要在之前的服务中增加三处步骤即可: 1.在Eureka Server中加入spring-boot-starter-security依赖 <dependencie ...
- redis 集群搭建: redis-cluster
前言 redis数据存储在内存中, 就会受到内存的限制, 大家都知道, 一台电脑, 硬盘可以有1T, 但是内存, 没有听说有1T的内存吧. 那如果数据非常多, 超过一台电脑的内存空间, 怎么办呢? 正 ...
- leetcode — reverse-integer
/** * Source : https://oj.leetcode.com/problems/reverse-integer/ * * Created by lverpeng on 2017/7/4 ...
- Python vtk学习(1)
Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有 ...
- Angular2入门:TypeScript的类 - 定义、继承和作用域
一.定义和继承 二.public.private和protected