CLR Via C# 读书笔记(待续)

Posted tomcat-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CLR Via C# 读书笔记(待续)相关的知识,希望对你有一定的参考价值。

  当年张三丰教张无忌太极拳曾问过:“无忌你记住了吗?”,无忌答“忘完了”。张三丰哈哈大笑:“好”,于是无忌学会了太极拳。但现实中,书看一遍忘完了,是真的忘完了。。。现在也没心思再自己专细节,这部分内容待我第二次读的时候再完善吧(逃...)

写在最前面

  到了年末摸鱼的欢乐时光,可以干点别的事情。首先介绍下我自己,2021年工作半年,入坑WPF。有幸遇到以为很厉害的前辈,跟我讲WPF的精美设计,前卫思想。不管WPF未来如何,的确能学到很多东西。这里记录分享看过的《CLR Via C#》。这里多说几句,私以为博客园虽然有很多大神写的精妙文章,让人佩服他们的深度,但是作为初学者看这些文章是不够的。没有建立系统的框架,这些知识点很快就会忘记。零食虽好吃,但是长身体仍需主食。这里只是对这本书的概括理解,如何有兴趣,一定要去看原书。最后,在下见识短浅,欢迎各位看官批评指正。

简介

这本书能够学到什么?
  在看这本书之前,我一直对程序的运行过程一知半解,比如编写的C#代码是如何在内存中加载,如何开始运行。这些底层知识对如何正确高效地设计代码有着重要的作用,例如,如何加快程序的运行速度(减少内存分配,减少耗时方面),如何理解复杂的线程并发交互。这本书较为系统地讲解了CLR,Common Language Runtime的设计理念,什么是CLR?类似于Java的虚拟机,CLR也是一个抽象的概念。可以把它当做一个程序,一个操作系统会调用的初始化程序。运行C#,F#等语言编写的程序所需要的.net framework和.net core又是什么?它们是基础的类库,其中一些库只能由CLR使用,一些库提供给开发人员使用(这两部分概念是我自己理解,可能有误)。CLR提供了内存管理、程序加载、安全性、异常处理、线程同步等功能。这本书的内容很是深刻,不是粗浅过一遍就能完全理解,但不必追求完全理解,在工作过程中时常翻阅,一定能够大有裨益。

CLR基础

  这部分内容属于平时用到比较少的,主要讲解了1.编写的C#代码如何编译,如何运行。2.c#的变量和函数是如何保存到模块中的(dll)3.对于dll的管控问题,如何解决相同的dll名字造成的

设计类型

  这部分介绍CLR中的类型
  4.基础类型:所有的类的基类System.Object类(有哪些函数);类型的转换(as,is);命名空间(解决了重复问题);类型对象在运行时如何在堆栈中分配空间;
  5.基元类型,引用类型和值类型:基元类型(int,double);引用类型和值类型(是否在堆中分配);拆箱与装箱(有很多函数是以object类型作为参数,当传入int,doubled等值类型时,会在堆中分配内存,封装成对象,利用好这一点能够优化编程的速度和内存);对象哈希吗;dynamic类型(在编译时检查定义为dynamic变量的类型,再调用函数)
  6.类型和成员基础:类型的各种成员(敞亮,字段,实例构造器等等);类型可见性(private,protect,internal);成员可见性;静态类;分布类(partial);多态和版本控制(virtual)
  7.常量和字段:const和readonly(前者以值嵌入到dll中)改动需要重新编译
  8.方法:构造器(值类型不允许无参);类型构造器(static);重载;扩展方法(this)
  9.参数:可选参数(默认参数);隐式局部变量(var);以应用传递参数(ref out);可变参数(params)
  10.属性:无参属性;有参属性(c#索引器)
  11.事件:如何定义事件(1.参数args2.事件成员event3.on方法4.输入转化为事件);实现事件
  12.泛型:FCL泛型(已定义System.Array等且有大量方法);泛型基础(每个泛型都是一个新类,list从object,dictionary从dictionary<string,guid>);泛型接口;泛型委托;泛型逆变和协变(参数可以为派生,返回可以为基类);泛型方法;可约束性和约束(Where T)
  13.接口:隐式接口和显示接口(前者为默认,后者为接口中定义的方法);泛型接口
  

基本类型

  14.字符、字符串和文本处理:char类型;string类型(文化,字符串留用);stringbuilder(转化为string);tostring(格式化方法);解析(parse);编码(Unicode);安全字符串(securestring)
  15.枚举类型和位标志:
  16.数组:初始化;转型(向上);派生自system.array;实现IEnumberable,ICollection,IList;创建下限非0;不安全的数组(stackalloc)
  17.委托:委托的实现;如何显示调用委托链;减少委托
  18.定制特性:
  19.可用值类型:

核心异常

  20.

线程处理

  21.

以上是关于CLR Via C# 读书笔记(待续)的主要内容,如果未能解决你的问题,请参考以下文章

CLR via C#读书笔记 CLR寄宿和AppDomain

《CLR Via C#》读书笔记,持续更新...

CLR via C# 阅读 笔记

CLR via C# 笔记 -- 特性(18)

CLR via C#深解笔记六 - 泛型

CLR via C# 学习计划