码迷,mamicode.com
首页 > 编程语言 > 详细

1.C#语言发展史

时间:2016-04-04 14:44:27      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

1.C#语言发展史

本部分简单介绍从C#1到C#5各个版本的语言新特性,

1.简单的数据类型

我们先使用C#1编写一个Product类,如下图所示

技术分享

C#2 中的强类型集合(泛型) 

技术分享

C#3 自动实现属性和简化初始化

技术分享

 

 

 

 

 

 

 

 

 

 

 

 

 

C#4 命名参数

技术分享

以上就是Product类从C#1到C#4的演变历程总结如下:

技术分享

2.排序和过滤

排序功能

下面我们将使用按名称对Product对象进行排序,来展示对排序的改进。

C#1中的排序

技术分享

C#2 中的排序(引入了泛型)

技术分享

技术分享

 

C# 3中的排序(Lambda表达式)

技术分享

下面总结一下在排序的过程中C#1-C#3过程中的演变历程

技术分享

3.列表查询

下面要展示的是查询出Product列表中price>250的所有商品

C#1的查询

技术分享

C#1中存在问题:C#1 中存在强制类型转换,使用if循环判断

C#2中的查询(引入泛型避免强制类型转换)

技术分享

使用if判断不专业,C#2中可以使用委托,并且将打印和查询分开

技术分享

在将上面的代码进行优化,如下所示,但是委托看起来依然很繁琐

技术分享

C#3 使用Lamdba表达式进行优化

技术分享

总结

技术分享

4.处理未知数据

可空类型

处理未知数据的场景:如果在数据库中Product类中的price对象值可以为null,但是在对象中它是值类型,值类型不能为null。

在C#1中处理方式有三种:

1.围绕decimal创建一个引用类型的包装器

2.维护一个bool类型值,表示他是否为null

3.使用"魔数"来表示一个未知的价格

 

C#2中使用.Net 2.0提供的 可空类型 Nullable<T>结构,并提供语法糖简化工作

readonly decimal? price;

可选参数和默认值

在C#1、C#2、C#3中如果不想对外提供所有的方法参数就必须使用方法的重载。

但是在C#4中引入了 "可选参数"

技术分享

 

5.Linq简介

Linq是C#3的核心,Linq是关于查询的,其目的是使用一致的语法和特性,以一种易阅读、可组合的方式,使对多数据源的查询变得简单。

查询表达式

数据源为对象的List

技术分享

例如:查询单价大于100的商品名称和供货商名称

技术分享

Var是在程序编译时根据结果推断所需的类型,类型推断

查询xml

数据源为xml文件

技术分享

技术分享

Linq to Sql

数据源为数据库时其写法类似于基于对象的list,以后再详细讲解。

 

6.com和动态类型

C#4 中最为重要的是互操作,其中包括两大主题对旧的com技术的处理和映入dynamic

 com:Component Object Model,C#4中简化Com互操作,支持索引器

 动态类型dynamic:一个新的类型,对于C#编译器是一个类型,CLR根本不识别,用于更动态语言进行交互。

 

7.异步代码

C#5的的特性:异步函数,可以使用异步函数来中断代码的执行,而不阻塞线程。

async: async 其实就是一个标记,标记这个方法是异步方法。当方法被标记为一个异步方法时,那么其方法中必须要使用await关键字。

await:

 

8..net平台简介

技术分享

1.C#语言发展史

标签:

原文地址:http://www.cnblogs.com/liangcheng/p/5351770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!