Professional C# 学习笔记之运算符和类型强制转换

时间:2022-12-03 17:23:38
1.checked{…}代码块会执行溢出检查。unchecked{…}则相反,默认值是unchecked。
2.数字转换为字符串用ToString()方法。字符串转换为数字,用Parser静态方法。如int.Parser(var);
3.ReferenceEquals()静态方法,测试两个引用是否指向类的同一个实例。
4.Equals()有两个方法,虚拟的和静态的,静态方法会先判断参数中有没有null,如果没有则调用虚拟的Equals()方法。虚拟的Equals()可以重写。这表示在重写Equals()的实例版本时,其效果相当于也重写了静态版本。
5.在重载==和!=时,还应重载从System.Object中继承的Equals()和GetHashCode()方法,否则会产生警告。原因是Equals()方法应执行与==运算符相同的相等逻辑。
6.不要通过从System.Object中继承的Equals()方法的实例版本,来重载比较运算符。因为如果计算objA==objB,而objA是null,那么.NET会试图计算null.Equals(objB),会产生异常。
7.用户定义数据类型的转换,public static implicit|explicit operator A(B value){…}。A,B为两不同类型。
8.C#要求把数据类型转换的定义放在原类(结构)或目标类(结构)的内部。
9.如果传送给方法的参数的数据类型不匹配任何重载方法,编译器会自行决定应该使用哪些转换方式进行数据转换。