zoukankan      html  css  js  c++  java
  • 1.C#语言发展史

    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平台简介

  • 相关阅读:
    Zabbix通过进程名监控进程状态配置详解
    kibana 统计field所有值百分比
    使用Logstash filter grok过滤日志文件
    python 修改文件内容
    清理elasticsearch的索引
    zabbix3.2.1安装graphtrees插件
    snmpwalk用法
    Zabbix通过SNMPv2监控DELL服务器的硬件信息
    zabbix上的宏(macro)介绍
    解决TeamViewer无法按给定网络地址联系伙伴
  • 原文地址:https://www.cnblogs.com/liangcheng/p/5351770.html
Copyright © 2011-2022 走看看