《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 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...
随机推荐
- 微信开发-PC调试-JS-SDK功能之分享功能调试
一般涉及和第三方的开发调试,都会比较麻烦些.不过,像微信这样的大公司呢,产品技术是过硬的,所以,基本上只要自己把文档看仔细了,弄好了,基本就没有问题了. 对于后端接口一类的调试,主要就是通过打印访问日 ...
- Shell-11--for
$(cat /etc/passwd) `cat /etc/passwd`
- python库函数Map, Filter and Reduce的用法
python中有三个函数式编程极大的简化了程序的复杂性,这里就做一下讨论和记录. 一 Map:应用在链表输入所有元素的函数,它的格式如下所示: map(function_to_apply, list_ ...
- postgresql-删除重复数据
greenplum最终的方法是: delete from test where (gp_segment_id, ctid) not in (select gp_segment_id, min(ct ...
- python(33)——【re模块】
re模块(正则表达式) 就其本质而言,正则表达式是一种小型的.高度专业化的编程语言 在Python中(它内嵌在python中),并通过re模块来实现,正则表达式被编译成一系列的字节码,然后由C编写的匹 ...
- 【原创】InputStream has already been read - do not use InputStreamResource if a stream needs to be read multiple times
一.背景 基于SpringBoot 构建了一个http文件下载服务,检查tomcat access 发现偶尔出现500 状态码的请求,检查抛出的异常堆栈 2019-03-20 10:03:14,273 ...
- 14-01 Java matches类,Pattern类,matcher类
Pattern类 正则表达式常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [ ...
- 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) —— 1.Practice questions
[解释] 应该是same padding 而不是 valid padding . [解释] 卷积操作用的应该是adding additional layers to the network ,而是应该 ...
- Eclipse常用注释设置
菜单:Window→Preferences→Java→Code Style→Code Template Files /** * @Title: ${file_name} * @Package ${pa ...
- div盒子水平垂直居中方法
文章转载自:div盒子水平垂直居中的方法 - 雪明瑶 这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居 ...