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的 ...
随机推荐
- Java解析word,获取文档中图片位置
前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word.excel.ppt格式的文档. 其中对word文档的处理有两个技术 ...
- lesson - 1 - IP /DNS /cat !$ /putty 知识扩充
一.知识点扩充 1.嵌入式Linux 开发与运维 .安卓手机 . Linux真正的用武之地是蓬勃发展的信息接入设备市 场.这些新兴的设备只有有限的内存,价格也只有几百美元,因此开发者需要新的 ...
- Nginx (三) 使用Keepalived搭建高可用服务
Nginx可以实现高并发反向代理,实现负载均衡,但是有个问题就是Nginx是单点的.如果Nginx故障,则整个服务将会处于不可用状态.所以我们就需要想办法让nginx高可用,即使一个Nginx宕机,还 ...
- 在亚马逊linux环境上装mysql+添加启动项
安装mysql sudo yum install mysql sudo yum install mysql-server sudo yum install mysql-devel 添加到系统启动项su ...
- Codebase Refactoring (with help from Go)
Codebase Refactoring (with help from Go) 代码库重构(借助于Go) 1.摘要 Go应该添加为类型创建替代等效名称的能力,以便在代码库重构期间渐进代码修复.本文解 ...
- unity -- Time类(持续更新中)
2018年了,新年总是会制定很多具体目标和计划,不管能否坚持去完成,初衷和决心总是要有的.本年第一篇博客终于开始下笔了,先立一些今年和公司业务无关的的flag: 1.希望每月或两月能看一套蛮牛游戏上的 ...
- base64格式图片转换为FormData对象进行上传
原理:理由ArrayBuffer.Blob和FormData var base64String = /*base64图片串*/; //这里对base64串进行操作,去掉url头,并转换为byte va ...
- MySQL安装的三种方式
.markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...
- vue2.0 样式表引入的方法 css sass less
在引入样式之前,首先要了解static.assets两个文件夹的区别. 从字面上可以看出,static用来存放静态文件,assets用来存放资源文件: static存放的文件不会被编译,打包后直接赋值 ...
- Ubuntu 16.04 LTS运行robo3t报错
系统环境:Ubuntu 16.04 LTS. 安装robomongo Robo 3T,运行时报以下错误: jaxu@jaxu-ubuntu:/usr/local/share/robo3t--linux ...