framework各版本新特性(为面试准备)
菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答;2.项目需要发布了,但是考虑到framework的版本兼容性——是否需要降版。
framework2.0:
代码片,重构,调试,可空值类型,空合并运算,多维数组,匿名方法,部分类。
代码片:将一段代码编辑成一个缩写,使用缩写让IDE自动添加已经定义的一段代码。(个人认为是IDE的功能)
重构:重命名方法,封装字段,封装方法,封装接口等改变代码结构的功能,优化代码。(个人认为是IDE的功能)
调试:支持debug时修改代码(个人认为是IDE的功能)
可空值类型:int?,Nullable<int>
空合并运算:AA??BB,AA是否为空,为空则使用BB;不为空则使用AA。关键字是??
int[][] nArrayHeight =
{
new [] {, }, new [] {, , }, new [] {, , , },
new [] {, , , , }
};//交错数组,数组的数组
int[,] arrayA = { { , , }, { , , } };//二维数组
int[, ,] arrarB =
{
{{, , , , }, {, , , , }, {, , , , }, {, , , , }},
{{, , , , }, {, , , , }, {, , , , }, {, , , , }},
{{, , , , }, {, , , , }, {, , , , }, {, , , , }}
}; //三维数组
public delegate void IntDelegate(int x);
IntDelegate d1 = delegate(int p) { Console.WriteLine(p); };
在使用不带参数和返回值的匿名方法定义时,需要注意以下两点:
1.如果在你的匿名方法中需要对参数进行处理,那么你不能使用不定义参数列表的声明方式。也就是在定义匿名方法的时候,需要给出参数列表。
部分类:partial关键字 将一个类的内容放在不同的cs文件中(前提是同一个命名空间),编译时将不同的cs文件中的部分类编译在一起。
framework3.0,3.5:
Linq,lambda表达式,var类型推断,自动属性,对象初始化,集合初始化,扩展方法,匿名类型,ASP.NET Ajax
Linq:语言集成查询
int[] scores = new int[] { , , , };
IEnumerable<int> scoreQuery =
from score in scores
where score >
select score;
lambda表达式:用一种新的写法将方法赋值给委托,与匿名方法相似
delegate String strDelegate(string x);
strDelegate lambda = a => { return a + "......"; };
var类型推断:不必清楚的知道是那种类型,由编译器在编译时进行推断,常在foreach中见到
private int _age;
public int Age { get { return _age; } set { _age = value; } } //这样非常清楚的看到属性其实是提供两个方法的“集合”
public int Age{get;set;};//(输入“prop”按tab键自动生成,其实是通过代码片来实现的)
对象初始化:UserInfo model = new UserInfo { id = Person.id, name =Person.name, age =Person.age };
集合初始化:与对象初始化类似, List<UserInfo> list = new List<UserInfo> {new UserInfo{age=1,name="Name",id=1}, new UserInfo{age=2,name="Name",id=2} };
扩展方法:它允许改变一个类,但是不需要源码,扩展方法是静态的。
public static class Extention
{
public static string toJsons(this object o)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(o);
}
}
注意:第一个参数是要扩展的类型,前面必须有this。扩展方法第一个参数在调用时不必考虑,即从第二个参数开始才是调用时的参数列表。
匿名类型:可以隐式类型化变量,使用var和new关键字来实现。
var Person = new { id = 1, name = "yourName", age = 22 };
UserInfo model = new UserInfo { id = Person .id, name =Person.name, age =Person .age };
ASP.Net Ajax:页面的局部刷新
framework4.0:
并行计算,动态类型,命名参数和可选参数
由于4.0版本新特性菜鸟D很少使用,无法描述,大家自己看吧。
http://www.cnblogs.com/webabcd/archive/2010/06/29/1767212.html
framework4.5:(还没用到...)
http://msdn.microsoft.com/zh-tw/library/ms171868.aspx
----------------------------------------华xie丽e的分割线-----------------------------------------------
题外话:
本文并未详细的描述framework各版本的新特性,只是简要介绍,正如标题所述为了应付一下面试。菜鸟D当年的面试,这个问题的答案是:我只用过3.5,所以对各个版本间的差异不了解。所以只好和面试官说“沙扬娜拉”了。
菜鸟D希望这篇文章对您有所帮助。
framework各版本新特性(为面试准备)的更多相关文章
- .Net Framework 各个版本新特性总结 (一)
.Net Framework 4.5 新特性 最近面试时又看到有问.Net Framework 新特性的问题,一时被问到了.平时也是拿起来就用,新版本出来了,新特性也就是瞄一眼,也没去仔细查看.这次干 ...
- 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性
[索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...
- c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】
引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...
- C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) C#各版本新特性 C#版本和.NET版本以及VS版本的对应关系
C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新) 2017年08月06日 11:53:13 阅读数:6705 历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有1 ...
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...
- Atitit mac os 版本 新特性 attilax大总结
Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0) 1984年2 2.2. Mac OS 7. ...
- IOS第三天-新浪微博 - 版本新特性,OAuth授权认证
*********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...
- 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
随机推荐
- FTP-使用记录
1.磁盘配额不够用 Could not write to transfer socket: ECONNABORTED - 连接中止 452-Maximum disk quota limited to ...
- MAC中使用Vim和GCC编译C程序
1.打开终端 2.输入以下命令进入vim编辑器: vim a.c 3.进入编辑器后按i进入insert模式,然后键入以下代码: #include<stdio.h> int main(){ ...
- CCArray
CCArray也是cocos2d-x自己写的类.它相当于是objc的NSArray.在cocos2d-x中是没有NSArray的概念的(NSArray和NSMutableArray的唯一区别就是一个不 ...
- struts配置文件和国际化
一.加载包struts2-core-2.3.24.1.jar struts-default.xml :各种栈 org.apache.struts2 -->> default.propert ...
- javascript中的元素包含判断
在实际开发中,很多时候需要知道某个节点是不是另一个节点的后代.很多浏览器提供了contains方法,如: console.log(document.documentElement.contains(d ...
- scale等比缩放才能做到看上去能让线条以中心点展开
.nav-menu>ul>li>a::before { background: #333 none repeat scroll 0 0; bottom: -2px; conte ...
- FarPoint Spread ChildView子视图
有一种需求场景在很多地方都会用到,就是父子关系(头表和子表的关系),比如订单和订单明细. 做过winform的朋友第spread控件应该比较熟悉,或者了解.他的展示方式就通过一个关联关系就可以了,下面 ...
- java 之 Spring 框架(Java之负基础实战)
1.Spring是什么 相当于安卓的MVC框架,是一个开源框架.一般用于轻型或中型应用. 它的核心是控制反转(IoC)和面向切面(AOP). 主要优势是分层架构,允许选择使用哪一个组件.使用基本的Ja ...
- 如何在windows下载和安装Apache
进入apache服务器官网http://httpd.apache.org/,这里我们以下载稳定版的httpd 2.4.25为例,点击"Files for Microsoft Windows& ...
- matlab计算矩阵每列非0元素个数
在统计分析中,有时候需要计算矩阵每列非0元素的个数,可以用以下方法: 先用find找到每列不为0的元素index,然后用count计数. 假设有矩阵A[M,N], 结果存在countZeros cou ...