【读书笔记】 -- 深入理解C#

xiaoxiao2021-03-01  58

目前进度

page 32

 

第一章   C#开发的进化史

类型 写法的简化,从C#1的写法,到delegate写法,到匿名函数写法,越来越精简 ①一句写完get、set和访问修饰符   C#3 public class Product { public string Name { get; set; } public decimal Price { get; private set; } public Product(string name, decimal price) { Name = name; Price = price; } } ②存储方式 从不安全的Array到了List  排序和过滤 ①排序 //匿名方法 products.Sort(delegate (Product x, Product y) { return x.Name.CompareTo(y.Name); } ); //lambda表达式 products.Sort((x, y) => x.Name.CompareTo(y.Name));

②查询

//Predicate Predicate<Product> test = delegate (Product p) { return p.Price > 10m; }; List<Product> matches = products.FindAll(test); Action<Product> print = Console.WriteLine; matches.ForEach(print); //匿名方法 products.FindAll(delegate (Product p) { return p.Price > 10m; }).ForEach(Console.WriteLine); //lambda表达式 products.FindAll((p) => p.Price > 10m).ForEach(Console.WriteLine);

 

处理未知数据 .NET 2.0引入Nullable<T>结构 让值类型也变为可空 "?"可以为null的学习,我之前已经会了。  

LINQ(language integrated Query)  C#3核心 ①LINQ太简洁了 链接(join) 筛选(on) 排序(orderby) 投影(select)一句话做完。 太酷了!还在看序的时候看到语法糖是为了LINQ,本来觉得语法糖已经很帅了,搜了一下LINQ的作用也很酷!以后要学习学习。 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 }; ②LINQ管理XML 和 SQL  顺手看了一下XML的基本操作 但工作上没有这需求,在回顾的时候已经忘记了 ③ var类型则是推断类型,也就是说在编译时可以确定的类型, dynamic则是动态类型, 类型不同区别在于一个是编译时确定的, 一个是运行时确定。 ④ 其实他与另一种类型有相当好的配合——就是匿名类。匿名类一般适用于lamba表达式,所以作用范围也只是当前的方法或片段中, 但如果这个匿名对象如果想在其他成员方法中引用,或才为字段/属性时,这个dynamic类型的作用就显示出来的。  COM和动态类型 ①COM  C#4特有特性 也用不上... ②动态类型  异步代码   C#5  .NET平台 ①JIT 具体的做法是这样的:当载入一个类型时,CLR为该类型创建一个内部数据结构和相应的函数, 当函数第一被调用时,JIT将该函数编译成机器语言.当再次遇到该函数时则直接从cache中执行已编译好的机器语言. ②发现了此书提起Mono Mono对C#编译器输出了解释,转化为了本地代码,进行JIT编译(查资料发现也使用了AOT)。 网上解释↓ .NET是微软的一个开发平台,简言之相当于Java的jdk,即最基础的开发包,最基础的框架。 Java开发首先安装jdk,而C#开发首先安装.NET。 Java开发借助开发工具eclipse或者idea,C#开发借助开发工具visual studio或者visual studio code。 Java是sun公司的编程语言,C#是微软的编程语言。 Java可以跨平台,微软也希望C#能够跨平台但是却不能够跨平台,微软主要业务来自Windows,如果跨平台,会打击Windows市场。 mono就是为了解决C#跨平台的问题,由Xamarin公司提出的,微软睁一只眼闭一只眼,不支持也不理会,任其自生自灭。 ③运行时 .NET运行时部分相当少的代码,负责确保用IL写的符合CLI规范的方式执行,称为CLR。  炫酷代码  

 

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

   委托   类型系统的特征 ①C#在类型系统的世界中的位置 很多书说C#是强类型 其实是指它是一种静态类型的语言(C#依然可以进行类型转换) (隐式转换) float f1 = 5; double d1 = f1; (显式转换) double d1 = 5; float f1 = (float)d1; ②显式类型和隐式类型  值类型和引用类型 ①举例说明  想当值得一看 加深理解 但又不可以简单言表  ②误区 ③装箱与拆箱  

 

 

转载请注明原文地址: https://www.6miu.com/read-3650125.html

最新回复(0)