《C#图解教程》读书笔记1-2章——C#和.NET

来源:互联网 发布:linux 调试工具 编辑:程序博客网 时间:2024/05/19 22:03

    这本书讲解C#语言十分详细,我将其中的重要内容整理成条款,以备忘。


1.      .NET由三部分组成:CLR,编码工具和BCLCLR负责内存管理、代码安全验证、代码执行、垃圾收集。.NET提供平台调用(P/Invoke,允许调用Windows API,而且还可以和COM进行交互操作。

 

2.      .NET开发人员可以不必了解COM的知识,无需考虑诸如IUnknown接口,类型库,引用计数,注册表以及HRESULT(COM 使用HRESULT)数据类型返回运行时错误代码,而.NET不使用HRESULT,因为所有的运行时错误都会产生异常。

 

3.      .NET语言的编译器接受源代码文件,输出文件为程序集。程序集中的代码并不是本地代码,而是CIL。程序集中包含CIL,程序集中使用的类型的元数据以及对其他程序集引用的元数据。

 

4.      CLR在运行时首先检查程序集的安全特性,然后在内存中分配空间,再把程序集中被调用到的代码送进JIT。程序集中的CIL只有在被调用到时才会被JIT编译成本地代码,然后就被缓存起来以备在后来的程序中执行,即不被调用的代码不会被编译成本地代码,而且被调用到的代码只被编译一次。一旦CIL被编译成本地代码,CLR就会在运行时进行管理,如:释放内存、检查数组边界、检查参数类型、管理异常等。

 

5.      运行在CLR,并且在运行时受CLR控制的代码叫做托管代码,反之为非托管代码。

 

6.      CLI(公共语言基础结构) 一组阐述了系统的架构、规则和约定的规范。包含CTS:定义了一组丰富的内置类型,定义了每种类型确定的详细的特性,而且所有支持.NET的语言提供的类型通常会映射到CTS中已定义的内置类型集的某一个特殊子集;CLS:详细说明了支持.NET语言的规则、属性和行为,其主题包括数据类型、类结构和参数传递。

 

7.      任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射。所有.NET语言共享这一类型系统,实现他们之间无缝的互操作,这个方案提供了语言之间的继承性。

 

8.      由于CLSCTS的子集,这意味着一种语言特征可能符合CTS标准,但却超过了CLS的规范,如:C#支持无符号数字类型,该特征能通过CTS测试,但CLS却仅仅识别有符号数字类型。因此,如果用户在一个组件类使用C#的无符号类型,就可能无法与不支持无符号类型的语言(如VB.NET)设计的组件实现互操作,但并非不可能,实际上,用户能够安全实现含有private成员的组件,CLS兼容性问题。但如果用户需要.NET语言的互操作性,那么用户的组件中的public成员必须完全符合CLS规范。

 

9.      @字符只能放在标识符的首位,标识符的命名风格有两种:Pascal风格,如:CarDeck,建议用于类型名和成员名;Camel风格,如:totalCycleCount,建议用于本地变量和方法参数。

 

10.  两个公共约定:字段名称使用下划线开头:example或使用m_开头:m_example

 

11.  C#中,可以使用任意的占位符和任意数量的值,值可以以任何顺序使用,值可以在格式字符串中替换任意次。例如:Console.WriteLine(”Three integers are {1}, {0}, {1}.”, 3, 6); 输出为Threeintegers are 6, 3,6.

 

12.  占位符不能引用值列表以外位置的值,如果这样做了,不会产生编译错误,但会产生运行时错误(异常)

 

原创粉丝点击