接前一部分,地址在这里
《C#精髓》一书属于O'Reilly出版的动物系列技术书籍,这一系列的书算是赫赫有名了,趁现在有空,走马观花地读一下这本书。
第三章 .NET框架编程
公用类型
位于System命名空间。
Object类
所有类的基类。提供了所有对象都具有的方法。
Object():构造函数
Equals():判断两个对象是否相等。
GetHashCode():返回对象自己的用于集合中的散列函数。
GetType():用于访问代表对象类型的Type对象,不能由用户实现。
ToString():提供代表对象的字符串。
Finalize():清除非内存资源,可被覆盖。
MemberwiseClone():创建对象的浅表复制(shallow copy),不能由用户实现,如果需要deep clone,使用接口Icloneable
Icloneable接口
用于克隆类或者结构的实例。包含Clone方法,返回实例的副本。
可简单使用this. MemberwiseClone();实现浅表复制,或者自己定制深复制。
IComparable接口
由拥有可排序实例的类型实现的。包含方法CompareTo,返回值情况:<0返回-,>0返回+,==0返回0
IFormattable接口
供具有格式化选项的类型实现,可以将其值转化为字符串。通常在调用String类的Format方法时使用。
数学支持
有Vector结构和Matrix结构,使用结构的原因是为了高效地创建低开销对象。
Math类提供了数学运算的许多函数的静态方法和常量。注意角度为弧度。
Random类生成伪随机数,默认用当前时间做种子。例如:
Random r=new Random();
int t=r.Next(10);
返回0~10之间的一个随机数。
字符串
String类是不可变字符串,可比较、添加、插入、转换、复制、格式化、索引、合并、分离、填充、去尾、删除、替换和搜索等方法。
注意这种类型字符串在创建之后就不能修改,看上去修改的方法本质上是创建了新的字符串。
字符串保留
程序中的所有字符串都可以保留,重复字符串将被删除,保证运行时节省空间,这样多个变量如果字面值相同,则一定指向了同一内存地址。
下面这段代码片段的输出结果都是True:
string a, b;
a = "guess the result!";
b = "guess the result!";
Console.WriteLine(a == b);
Console.WriteLine(a.Equals(b));
Console.WriteLine((object)a == (object)b);
Console.Read();
格式化字符串
Format方法处理一个格式规范的字符和许多可变参数,如果参数实现了IFormattable接口,则传给该接口的Format方法,否则就调用Object的ToString方法。
字符串索引
类似数组,下标从0开始。
字符串编码
字符串通过使用Encoding类在不同字符编码之间转换。
注意Encoding类型不能直接创建,但是其ASCII、Unicode、UTF7等静态属性可以正 确返回自己创建的实例。
StringBuilder类 表示可变字符串,从预定义的16字符开始,能够根据字符串长度动态变化,上限可以无限,或者小于某个限定值。
评论