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的 ...
随机推荐
- InnoDB 逻辑存储结构
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/80 如果创建表时没有显示的定义主键,mysql会按如下方式创建主 ...
- Add to List 349. Intersection of Two Arrays
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
- weex Mac开发环境
安装: 1.java的jdk下载和安装 1-1.下载.安装:省略 1-2.配置 第一步:命令行内输入touch .bash_profile命令,生成.bash_profile的隐藏配置文件,用于配置j ...
- Java容器---List
List 承诺可以将元素维护在特定的序列中.List 接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素. 有两种类型的List: -----基本的 ...
- 设置状态栏(UIStatusBar)样式
方法1:找到项目里面的info.plist文件,添加属性Status bar style,设置属性值为transparent black style 状态条为白色 ,设置属性值为 gray style ...
- Django学习日记06_视图_URLconf、View
URLconf Django通过URLconf来响应网页请求,在项目设置settings.py中,设定了ROOT_URLCONF值来指定默认的URLconf(即mysite.urls),当HTTPRe ...
- php 常量const
常量使用关键词const修饰,一经定义,不能改变 常量的使用规则 定义后,应该马上赋初始值 不能用public.private.protected修饰 在本类,可用self::name 类名::na ...
- Hive Getting Started补充
配置管理概述 Hive从<install-dir>/conf/hive-default.xml中读取它的默认配置 Hive配置目录的位置可以通过设置HIVE_CONF_DIR环境变量的值来 ...
- java String 不可变
关于String不可变的问题也看了很多,最近看了一篇讲的非常好的文章,总结如下 所谓的不可变,并非真的不可变String s = "123"; s = "456" ...
- 浮动(float)与清除浮动(clear)
上一篇中我们了解了块级元素与内联元素,今天将自己查阅的资料整理写出来,与大家一起理解什么是浮动,以及怎样清除浮动,本文以div元素为例. 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮 ...