C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:49
第六章 运算符和类型强制转换
1,运算符
sizeof在.Net Framework后不存在了。
checked和unchecked运算符
checked:标识溢出检查,添加编译选项/checked,对所有代码执行溢出检查
unchecked:对标识checked的代码段取消溢出检查。
is运算符
检查对象是否与特定的类型兼容。"兼容"表示对象是该类型,或者派生于该类型。若兼容,为true,不兼容,false。
as运算符
用于执行引用类型的显式类型转换。如果转换的类型与指定的类型兼容,转换成功,不兼容,返回false。
sizeof运算符
typeof运算符
返回一个特定类型的System.Type对象
可空类型和运算符
可以将值指定为null。
int? a = null;
在比较可空类型时,只要有一个操作数为null,结果就为false。
空结合运算符??
提供一种快捷方式,可以在处理可空类型和引用类型时表示null值。
这个运算符放在两个操作数之间,第一个操作数必须是一个可空类型或者引用类型,第二个操作数必须与第一个操作数的类型相同,或者可以隐式转换为一个操作数的类型。
空结合运算符的计算如下:如果第一个操作数不是null,则整个表达式就等于第一个操作数的值。如果第一个操作数的值为null,则表达式的值为第二个操作数的值。
运算符的优先级(从高到低)
2,对象相等的比较
Object的静态成员ReferenceEquals,测试两个引用是否指向类的同一个实例
虚拟的Equals:按值来比较
静态的Equals:可以处理null的情况
比较运算符==:对值比较值,对引用比较是否指向同一个对象。可重写,执行和Equals相同的逻辑。
调用ReferenceEquals来比较值类型肯定返回false,因为为了调用这个方法,值类型总是需要装箱。
3,运算符重载
C#要求把所有的运算符重载都声明为public和static。不能使用this,不能访问实例成员。
编译器处理运算符重载和处理方法重载的方式是一样的,所以,对于运算符两侧类型不同的,需要定义两个不同的运算符重载函数。
C#不允许重载=,但是在用户重载+-*/&/后,会自动重载相应的+=。。版本。
比较运算符的重载
比较运算符分为三对:
==和!=
>和<
>= 和 <=
C#要求成对重载比较运算符,比较运算符必须返回bool型变量。
可以重载的运算符
4,用户定义的数据类型转换
上述代码声明了一个隐式类型转换。
也可使用explicit声明一个显式类型转换
类型之间的数据转换
限制
- 如果某个类直接或者间接继承了另一个类,就不能定义这两个类之间的数据类型转换,
- 数据类型转换必须在源或目标数据类型中定义
数据类型转换应该定义在类型内部,且源代码均可编辑,防止把第三方数据类型引入类中。
相关文章
-
C#绘制三角形并填充,使用winform实现qq聊天气泡
C#绘制三角形并填充,使用winform实现qq聊天气泡
- 互联网
- 2026年04月04日
-
C#获取一个数组中的最大值、最小值、平均值
C#获取一个数组中的最大值、最小值、平均值
- 互联网
- 2026年04月04日
-
C#记录日志、获取枚举值 等通用函数列表
C#记录日志、获取枚举值 等通用函数列表
- 互联网
- 2026年04月04日
-
c 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ
c 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ
- 互联网
- 2026年04月04日
-
c183;
c183;
- 互联网
- 2026年04月04日
-
C#读取Excel文件:通过OleDb连接,把excel文件作为数据源来读取
C#读取Excel文件:通过OleDb连接,把excel文件作为数据源来读取
- 互联网
- 2026年04月04日






