《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 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...
随机推荐
- django-pure-pagination实现分页
django-pure-paginations是一个第三方的分页插件 安装 django-pure-pagination pip install django-pure-pagination 在set ...
- 线程误区-join,wait(里边还是调用的wait)
1.一个线程执行结束后会执行该线程自身对象的notifyAll方法,这个是在jvm中实现的. 2.join的作用是:当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直到被调用线程(thread ...
- vue父子组件传递参数之props
vue中父组件通过props传递数据给子组件, props有两种传递方式 1.props:['msg']2.props: { msg:{ type:String, default:"&quo ...
- TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议
ICMP是一种面向无连接的协议,负责传递可能需要注意的差错和控制报文,差错指示通信网络是否存在错误(如目的主机无法到达.IP路由器无法正常传输数据包等.注意,路由器缓冲区溢出导致的丢包不包括在ICMP ...
- kafka server管理
kafka启动以来zookeeper kafka启动之前,首先要启动zookeeper 1.1.kafka启动单个节点 -daemon 表示程序以守护进程的方式后台云心 --override pro ...
- EOS1.1版本新特性介绍
EOSIO/eos 目前在github的项目活跃度方面排名第一,release版本更新的速度让人应接不暇.今天EOS的大版本1.1发布,我也有幸参与了贡献,本篇文章重点介绍1.1版本的重大功能升级. ...
- CynosDB技术详解——存储集群管理
本文由腾讯云数据库发表 前言 CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: ...
- 国内高速Maven仓库
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> & ...
- Canvas画空心正五角星-扩展DEMO为五星红旗
马上就要国庆了,在这个举国欢庆的日子里面,让我来画一个五角星表表我的爱国之情,啊?那你不是要画一个五星红旗?是的,你猜对了,其实我的最初想法只是画一个空心的正五角星,为了满足你,我拼一拼.在这个过程中 ...
- Windows版本redis高可用方案探究
目录 Windows版本redis高可用方案探究 前言 搭建redis主从 配置主redis-28380 配置从redis-23381 配置从redis-23382 将redis部署为服务 启动red ...