C#3.0-新增加功能浅析(1)
通过最近的学习,总结了以下一部分C#3.0中新增加的功能,供大家学习,呵呵~~
(1)隐含类型局部变量:
1) var为关键字,可以根据后面的初始化语句自动推断类型;
2) 初始化语句必须为表达式,且编译时可以推断类型;
3) Var声明的仅限于局部变量,也可以用于foreach,using等语句中;
4) 数组也可以作为隐含类型;
(2)扩展方法:
扩展方法允许我们在不改变源代码的情况下扩展(即添加)现有类型中的实例方法。
Eg:
Public static class Extensions{//类型是什么都可以,但是必须是静态类。
Public static void Foo(this string s){
……
}
}
String s=”aaa”;
s.Foo();//调用了扩展方法Foo();
以前的可以扩展的办法由三种:
继承一个类可以扩展它;用包含(组合)的方法来扩展;用反射的方法来扩展;
扩展方法要点:
本质是将实例方法调用在编译期改变为静态类中的静态方法调用;
注意扩展方法的优先级:现有实例方法优先级最高,其次为最近的namespace下的静态类的静态方法,最后为较远的namespace下的静态类的静态类的静态方法;
扩展方法是一种编译时技术,注意与反射等运行时技术进行区别,并慎重使用。
(3)对象与集合初始化器:
Public class Point{
Int x,y;
Public int X{get{return x;}set{x=value;}}
Public int Y{get{return y;}set{y=value;}}
}
Var a=new Point{X=0,Y=1};
相当于:var a=new Point();a.X=0;a.Y=1;
集合初始化器:
List<int> num=new List<int>{0,1,2,3,4};
对象与初始化器要点:
对象初始化器实际上利用了编译器对对象中对外可见的字段和属性进行按序赋值;
集合初始化器会对初始化器中的元素进行按序调用ICollection<T>.Add(T);
注意对象初始化器和集合初始化器中成员的可见性和调用顺序;
对象与集合初始化器同样是一种编译时技术。
(4)匿名类型:
可以使用new关键字调用匿名初始化器创建一个匿名类型的对象;
匿名类型直接继承自System.Object;
匿名类型的成员是编译器根据初始化器推断而来的一些读写属性。
本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/403741,如需转载请自行联系原作者
C#3.0-新增加功能浅析(1)相关推荐
- C#各版本新增加功能
本系列文章主要整理并介绍 C# 各版本的新增功能. C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual Studio 2019 一同发布,但是当前处于预览状态. ...
- android volte功能,Android 7.1 关于Volte新增加一些功能开关
7.1新增加功能开关(CarrierConfigManager) 1.默认不插卡紧急号码走ims,设置开关: // SetKEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY ...
- Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)
1. Annotation注解 1.1. Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...
- MaxCompute2.0新功能介绍
摘要:在过去的两年内,MaxCompute进行了翻天覆地的重构,从1.0版本全面升级到了2.0版本.而大家或许对于MaxCompute 2.0的一些新特性并不了解,在本文中,MaxCompute技术专 ...
- android9多了什么功能,Android 9.0 都增加了什么功能?
Android 每年的新版本都会有一些新的功能出现,虽然有些已经是国产手机用过的,但从系统层面支持的话,可以得到更好的体验,也可以间接地减少系统资源的浪费和电量的消耗,我们来看看这次的Android ...
- android studio 3.0新功能介绍
谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...
- android功能导航布局,安卓9.0新功能 屏幕旋转将与导航栏同窗
中关村在线消息:今天早些时候谷歌向开发者们推送了Android P(也称安卓9.0)的首个开发者预览版,在原先8.0的基础上进一步改进了通知栏,也为刘海屏幕专门进行了优化.意味着未来"刘海& ...
- Android7.0新特性、新功能
[本文转载来自http://blog.csdn.net/hao54216/article/details/52388755] 前言: 总想写点自己的东西,因为很多Android知识网上大部分都有教程, ...
- Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍
Razor Page介绍 前言 上周期待已久的Asp.Net Core 2.0提前发布了,一下子Net圈热闹了起来,2.0带来了很多新的特性和新的功能,其中Razor Page引起我的关注,作为web ...
最新文章
- CC2540 OSAL 学习其中原理,以及 给任务 添加 一个事件(定时发送串口消息)
- 【转】mssql中大小写的区分
- 信息资源管理的标准与法规
- 李宏毅深度学习——第一天(Bias and Variance)
- 关于一个局部变量未初始化引发的项目异常退出问题
- O(N) 求 1~N 逆元 模板及证明
- python 守护程序检测进程是否存在_python创建守护进程的疑问
- UIWindow的windowLevel详解
- 小菜学设计模式——观察者模式
- Docker图形化工具Portainer
- 中文代码编写php,PHP开发网站代码编写规范
- 中兴 F607 光猫超级管理用户查看
- 东芝打印机共享怎么设置_东芝打印机如何共享
- 林志福林玉使林树勋林宝敏林士焜,玉树传芳远,心正永德长;天经地义重,图书翰墨香
- Java //PP2.11 编写一个程序,提示输入一个代表总钱数的双精度值,然后确定每种纸币和硬币需要的最少数量以达到输入的总钱数(假设10美元纸币为所需要的最大面额)。例如,如果输入的值为47.63
- 网考英语和计算机范围,中考英语听说机考周六首考,考生要依据计算机提示作答...
- JavaScript:隐藏、显示div
- C/C++编程学习 - 第7周 ⑥ 合影效果
- 关于红外调制基础理解
- 购物车——js小项目实例