菜鸟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.如果在你的匿名方法中需要对参数进行处理,那么你不能使用不定义参数列表的声明方式。也就是在定义匿名方法的时候,需要给出参数列表。

           2.不带参数和返回值的匿名方法,可以被具有任何形式签名的委托所指代。

  部分类: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各版本新特性(为面试准备)的更多相关文章

  1. .Net Framework 各个版本新特性总结 (一)

    .Net Framework 4.5 新特性 最近面试时又看到有问.Net Framework 新特性的问题,一时被问到了.平时也是拿起来就用,新版本出来了,新特性也就是瞄一眼,也没去仔细查看.这次干 ...

  2. 精进不休 .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 ...

  3. 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.----------- ...

  4. 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. ---------- ...

  5. 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 ...

  6. Atitit opencv版本新特性attilax总结

    Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...

  7. 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. ...

  8. IOS第三天-新浪微博 - 版本新特性,OAuth授权认证

    *********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...

  9. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

随机推荐

  1. 由浅入深Mysql优化

    选Mysql优化作为我的第一篇博文,实在是因为这个东西很有意思,也是能体现后端开发人员设计细节及逻辑分析的一个知识点. 那么来吧: 作为Mysql优化,很多人大概能跟着感觉说出如下   :  (1)常 ...

  2. Iphone安装铃声

    PP助手 应用列表中打开铃声多多文档. 5点击铃声下载,找到下载的铃声,按下图所示步骤导出至电脑. 6在PP助手界面内,找到"视频音乐"标签,然后进入视频音乐分类下的铃声分类,点击 ...

  3. [HNOI2004]Language L语言

    2777: [HNOI2004]Language L语言 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 10  Solved: 5[Submit][S ...

  4. iOS + UIWebView 实践

    1. 调用java script 现在只能实现弹出窗口 [self.m_webView stringByEvaluatingJavaScriptFromString:@"alert(1)&q ...

  5. php5.4下配置zend guard loader

    前些日子的时候,zend官网下还没有支持PHP5.4的zend guard loader,今天再上去看的时候居然发现了,看来是我好久不关注它的缘故了... zend guard loader 干什么的 ...

  6. js与AMD模块加载

    目的: 了解AMD规范与CMD规范,写一个模块加载器雏形. 基本概念: AMD是异步模块定义规范,而CMD是通用模块定义规范.其他的还有CommonJS Modules规范. 对于具体的规范,可以参考 ...

  7. 使用 Passenger +Apache扩展 Puppet,代替其Webrick的web框架

    使用 Passenger +Apache扩展 Puppet,代替其Webrick的web框架 1安装 yum install ruby-devel ruby-libs rubygems libcurl ...

  8. 基于Ubuntu 14.04构建mysql5.6 Docker镜像

    我们的目的是创建一个基于Ubuntu 14.04 的MySQL的 Docker Image,并且在新创建出来的容器里自动启动MySQL服务接受外部连接 步骤: 1. 首先创建一个目录并在目录下创建一个 ...

  9. RedisRepository分享和纠错

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  10. KB奇遇记(7):不靠谱的项目实施计划

    在ERP项目启动前期,项目组两方项目经理和我等几个人单独跟总裁开会,讨论了初步的ERP实施计划,本来第一期上线只是考虑上其中一家工厂而已,结果临时加入了深加工的工厂.本来项目组预定计划是2017年1月 ...