C#的改进特性
1.初始器
当你新建一个对象实例的时候,是否遇到下面这种情况:
class a = new class();
a.item1 = "";
a.item2 = "";
或者写一个构造函数去专门初始化这些东西,但是用初始化器,你可以不用专门去写一个构造函数就可以初始化参数,直接一步到位
class a = new class(){item1 = "", item2 = ""};
2.类型推理
C#可以根据var关键字去推断当前的类型时是什么类型,这个在后面的应用会非常有效,例如说linq
var num = ;//编译器帮我们自动判断为int类型
3.匿名类型
当我们需要创建一个对象去专门存储数据的时候就会写以下代码:
class temp{
public string item1;
public string item2;
private int item3;
}
//然后在使用的地方直接new该对象,然后赋值
temp t = new temp(){item = "",item2="",item3 = };
C#可以根据要存储的数据自动创建类型,而不用我们去定义那些数据存储类型。
temp t = new{item1 = , item2 =};
4.Lambda
Lambda用以简化委托函数的参数传递,当我们去使用IEnumerbale的方法的时候就会遇到一些委托函数的传递,比如说where();
where函数需要传递一个参数为当前类型,返回类型为bool的函数过去作为参数如下所示:
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
如果用普通的方法那么则需要先写一个比较函数,然后把这个函数的名字传递过去
如下所示:
static void Main(string[] args) {
List<int> list = new List<int>();
for (int i = ; i < list.Count; i++) {
list[i] = i;
}
// 把定义函数的名字传过去
IEnumerable<int> w = list.Where(compare);
}
//先定义一个比较的函数
static bool compare(int i) {
return i > ;
}
但是上面的代码比较得冗余,我们可以使用一种更方便的方法,那就是Lambda,类似于上面所说的匿名类型,这次是匿名函数(Lambda)。
List<int> list = new List<int>();
for (int i = ; i < list.Count; i++) {
list[i] = i;
}
IEnumerable<int> w = list.Where((x) =>{return x > ;});
Console.ReadKey();
其中里面的x用来定义形参,=>是分隔符,分隔开参数和代码实现地方,后面是代码实现地方,下面是简化版的,如果去掉{}后面的代码就是return。
List<int> list = new List<int>();
for (int i = ; i < list.Count; i++) {
list[i] = i;
}
IEnumerable<int> w = list.Where(x => x > );
Console.ReadKey();
C#的改进特性的更多相关文章
- Oracle Data Integrator 12c (12.1.2)新特性
改进特性如下: 基于流程界面的声明式设计 在12c中,以前的接口(interface)已经改为映射(mapping),新的基于流程声明的设计方式更灵活,也更容易使用.在12c中,映射的实现是通过使用J ...
- Windows操作系统
Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家 ...
- mysql基础篇-----mysql简介
2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...
- Git详解之五:分布式Git
为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库.经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令.接下来,我们要学习下如何利用 Git 来组织 ...
- Windows 操作系统
Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家 ...
- Orleans介绍
一.介绍 Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序 默认可扩展 -> Orleans处理构建分布式系统的复杂性,使您的应用程序能够扩展到数百台服务器.低延迟 ...
- Git详解之五 分布式Git
以下内容转载自:http://www.open-open.com/lib/view/open1328070090108.html 分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服 ...
- Apache配置的5个技巧
AcceptMutex Apache 1.3.21和Apache 2.0中引入了AcceptMutex 指示符,该指示符给调节服务器的性能带来了一个难得的机会.该指示符配置Apache的accept( ...
- Git全面教程
Git全面教程 简介 Git分布式版本管理系统. Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的 ...
随机推荐
- wait/notify 实现多线程交叉备份
一.任务 创建20个线程,其中10个线程是将数据备份到 A 数据库中,另外10 个线程将数据备份到 B 数据库中,并且备份 A 数据库和 备份 B 数据库的是交叉运行的. 二.实现 1.实现备份 A ...
- spring boot + Thymeleaf开发web项目
"Spring boot非常适合Web应用程序开发.您可以轻松创建自包含的HTTP应用.web服务器采用嵌入式Tomcat,或者Jetty等.大多数情况下Web应用程序将使用 spring- ...
- EL表达式隐式对象
用户输入界面 ---------------------------------------------------------------------------------------- < ...
- Android开发之漫漫长途 IX——彻底掌握Binder
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- vue2.0父子组件以及非父子组件如何通信
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...
- 当你的电脑出现stop: 0X0000007B
这几天可算是把我折腾惨了.先是linux系统无法进入图形化桌面,几经折腾,我把linux删除重装.怎知道,我在瘟都死下删除linux的分区,结果我的两个瘟都死分区也没了,哭了我去恢复数据,但是然并卵. ...
- ubuntu 安装 pythonenv
This will get you going with the latest version of pyenv and make it easy to fork and contribute any ...
- Adb+.net 实现微信跳一跳自动化
第一次用adb,一开始只是想试试看能不能解析出,没有看网上的现有解析方式. 需要安卓机开启usb 调试+电脑运行.打开跳一跳的界面 点击程序 [开始]按钮即可开始,别的按钮都是调试用的 主要流程是用a ...
- Android View的事件冲突
上一篇博客讨论了一下view中的事件分发,既然存在事件分发的过程,那么也就可能存在着冲突.常见的由以下三种形式的冲突.(外面叫做OuterViewGroup,包裹在里面的叫做InnerViewGrou ...
- angular4——安装
本文同样适用于NG4,最近开始学ng2了,前端小白一枚啊,做过安卓开发,做过java写的服务器啊,热爱前端啊,所以就开坑了,入坑之前建议先学下es6哦,学完后看下typescript哦,正所谓,前面基 ...