博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
framework各版本新特性(为面试准备)
阅读量:4993 次
发布时间:2019-06-12

本文共 3231 字,大约阅读时间需要 10 分钟。

      菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答;2.项目需要发布了,但是考虑到framework的版本兼容性——是否需要降版。

      framework2.0:

      代码片,重构,调试,可空值类型,空合并运算,多维数组,匿名方法,部分类。

      代码片:将一段代码编辑成一个缩写,使用缩写让IDE自动添加已经定义的一段代码。(个人认为是IDE的功能)

      重构:重命名方法,封装字段,封装方法,封装接口等改变代码结构的功能,优化代码。(个人认为是IDE的功能)

  调试:支持debug时修改代码(个人认为是IDE的功能)

  可空值类型:int?,Nullable<int>

      空合并运算:AA??BB,AA是否为空,为空则使用BB;不为空则使用AA。关键字是??

      多维数组:多维数组个人使用较少,无法准确描述。举例如下(实例化的写法不止一种写法):
                    
int[][] nArrayHeight =            {                new [] {
1, 2}, new [] {
1, 45, 42}, new [] {
1, 2, 56, 43}, new [] {
1, 2, 5, 67, 2} };//交错数组,数组的数组 int[,] arrayA = { { 2, 4, 4 }, { 6, 2, 8 } };//二维数组 int[, ,] arrarB = { {
{
1, 2, 3, 4, 5}, {
1, 2, 3, 4, 5}, {
1, 2, 3, 4, 5}, {
1, 2, 3, 4, 5}}, {
{
2, 3, 4, 5, 6}, {
2, 3, 4, 5, 6}, {
2, 3, 4, 5, 6}, {
2, 3, 4, 5, 6}}, {
{
3, 4, 5, 6, 7}, {
3, 4, 5, 6, 7}, {
3, 4, 5, 6, 7}, {
3, 4, 5, 6, 7}} }; //三维数组
  匿名方法:常与委托一起使用,如下:
       
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[] { 97, 92, 81, 60 };            IEnumerable
scoreQuery = from score in scores where score > 80 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很少使用,无法描述,大家自己看吧。

     

     framework4.5:(还没用到...)

  

----------------------------------------华xie丽e的分割线-----------------------------------------------

题外话:

  本文并未详细的描述framework各版本的新特性,只是简要介绍,正如标题所述为了应付一下面试。菜鸟D当年的面试,这个问题的答案是:我只用过3.5,所以对各个版本间的差异不了解。所以只好和面试官说“沙扬娜拉”了。

菜鸟D希望这篇文章对您有所帮助。

转载于:https://www.cnblogs.com/cnDqf/p/4157049.html

你可能感兴趣的文章
RN开发-Navigator
查看>>
innodb二进制文件相关的参数
查看>>
前谷歌高管给初入职场新人的14条忠告
查看>>
01-html介绍和head标签
查看>>
Python之Linux下的 virtualenv
查看>>
ASP.NET Web开发框架之三 报表开发
查看>>
大家好
查看>>
PHP文件上传类
查看>>
Python基础 --- 使用 dict 和 set
查看>>
仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)
查看>>
Python之数据结构基础
查看>>
WPF:如何高速更新Model中的属性
查看>>
hdu 1010(DFS) 骨头的诱惑
查看>>
(转)Android SDK Manager国内无法更新的解决方案
查看>>
SQL语句修改表
查看>>
ubutnu 挂载磁盘
查看>>
continue 和 break的实例
查看>>
Java学习笔记()ArrayList
查看>>
redis缓存清除
查看>>
django Highcharts制作图表--显示CPU使用率
查看>>