zoukankan      html  css  js  c++  java
  • 深入理解c#(第三版)(文摘)

    第一部分 基础知识

    第1章 C#开发的进化史

    1.3

    1.3.1 表示未知的价格

    public decimal? Price { get; private set; }

    new ProductWithNullablePrice { Name="Sweeney Todd", Price=null}

    foreach (ProductWithNullablePrice product in products.Where(p => p.Price == null))

    1.3.2 可选参数和默认值

    public Product(string name, decimal? price = null)

    1.4 LINQ简介

    List<ProductWithSupplierID> products = ProductWithSupplierID.GetSampleProducts();
    List<Supplier> suppliers = Supplier.GetSampleSuppliers();
    var filtered = from p in products
    join s in suppliers on p.SupplierID equals s.SupplierID
    where p.Price > 10
    orderby s.Name, p.Name
    select new
    {
    SupplierName = s.Name,
    ProductName = p.Name
    };
    foreach (var v in filtered)
    {
    Console.WriteLine("Supplier={0}; Product={1}",
    v.SupplierName, v.ProductName);
    }

    linq to XML

    XDocument doc = XDocument.Load("data.xml");
    var filtered = from p in doc.Descendants("Product")
    join s in doc.Descendants("Supplier")
    on (int)p.Attribute("SupplierID")
    equals (int)s.Attribute("SupplierID")
    where (decimal)p.Attribute("Price") > 10
    orderby (string)s.Attribute("Name"),
    (string)p.Attribute("Name")
    select new
    {
    SupplierName = (string)s.Attribute("Name"),
    ProductName = (string)p.Attribute("Name")
    };
    foreach (var v in filtered)
    {
    Console.WriteLine("Supplier={0}; Product={1}",
    v.SupplierName, v.ProductName);
    }

    linq to SQL

    1.5 COM和动态类型

    1.6 异步代码

    第2章 C#1所搭建的核心基础

    2.1 委托

    1.声明委托类型

    2.为委托实例的操作找到一个恰当的方法

    3.创建委托实例

    4.调用委托实例

    ------------------------------------------

    2.2 类型系统的特征

    静态,显示,安全的

    2.3 值类型和引用类型 

    引用类型保存在堆上,变量的值是在它声明的位置存储的。只有局部变量和方法参数在栈上。

        int? nVal1 = null;
    int? nVal2 = 5;
    // nVal1为空,相乘后还是null,输出0作为默认值
    Console.WriteLine(2 * nVal1 ?? 0);
    // nVal2非空,取计算值输出,输出10
    Console.WriteLine(2 * nVal2 ?? 0);

    第二部分 c#2:解决c#1的问题

    第3章 用泛型实现参数化类型

    类型约束:

    1.引用类型约束:where T:class

    2.值类型约束:where T:struct

    3.构造函数类型约束:where T:new()  string没有无参的构造函数

    4.转换类型约束 派生一个类,多个接口

    5.组合约束

    由子类向父类转换是协变;由父类向子类转换是逆变

    第4章 可空类型

    public struct Nullable<T> where T : struct

    DateTime? death;

    第5章 进入快速通道的委托

    第6章 实现迭代器的捷径

    yield的用法:

    简单地说,当希望获取一个IEnumerable<T>类型的集合,而不想把数据一次性加载到内存,就可以考虑使用yield return实现"按需供给"。

    yield break 表示跳出迭代.

    yield return 表示在迭代中下一个迭代时返回的数据

    第7章 结束c#2的讲解:最后的一些特性

    分部类型。静态类。独立的取值方法,赋值方法属性访问器。命名空间别名。

    Pragma指令:警告pragma。非安全代码固定大小的缓冲区。把内部成员暴露给选定额程序集。

    第三部分 c#3:革新写代码的方式

    第8章 用智能的编译器来防错

    自动实现的属性。

    隐式类型的局部变量。var

    对象和集合初始化程序。

    Person tom = new Person
    {
    Name = "Tom",
    Age = 9,
    Home = { Town = "Reading", Country = "UK" },
    Friends =
    {
    new Person { Name = "Alberto" },
    new Person("Max"),
    new Person { Name = "Zak", Age = 7 },
    new Person("Ben"),
    new Person("Alice")
    {
    Age = 9,
    Home = { Town = "Twyford", Country="UK" }
    }
    }
    };

    隐式类型的数组。

    var tom = new { Name = "Tom", Age = 9 };
    var holly = new { Name = "Holly", Age = 37 };
    var jon = new { Name = "Jon", Age = 36 };

    匿名类型。

    第9章Lambda表达式和表达式树

    第10章 扩展方法

    第11章 查询表达式和Linq to objects

    第12章 超越集合的Linq

    第四部分 c#4:良好的交互性

    第13章 简化代码的微小修改

    第14章 静态语言中的动态绑定

    dynamic

    第五部分 c#5:简化的异步编程

    第15章 使用async/await进行异步编程

    第16章 c#5附加特性和结束语

  • 相关阅读:
    【python3之文件操作】
    【Python3之字符编码】
    【python3之变量,输入输出,判断,循环】
    【Python3之正则re】
    【Python3的命名空间与作用域,闭包函数,装饰器】
    【Python3的函数初识】
    【Python3的进制扫盲】
    JS实现数组去重方法总结(六种方法)
    localstorage sessionstorage和cookie的区别,以及他们各自的用法总结
    es6 javascript对象方法Object.assign()
  • 原文地址:https://www.cnblogs.com/smileberry/p/6121038.html
Copyright © 2011-2022 走看看