第5章 运算符和类型强制转换
2007-02-02 20:14
706 查看
本章有以下主要概念:
一:类型的安全性;
二:对象的相等比较;
三:运算符重载;
四:用户定义的数据类型转换
C#运算符和C语言有些差不多,对运算符的学习主要在运算符重载
运算符重载也许有些奇怪,为什么要重载运算符呢?^_^在有些时候尤其是数学上的运算需要,比如量子力学中矩阵运算比较多,那么*运算符在这里就不是简单的数字相乘的意思,我们需要重新定义*的意思,即所谓的运算符重载,下面举个简单的例子看运算符是怎么重载的
public static Vector operator +(Vector lhs, Vector rhs) //运算符+重载
{
Vector result = new Vector(lhs);
result.x += rhs.x;
result.y += rhs.y;
result.z += rhs.z;
return result;
}
这个例子我们首先定义了一个结构Vector,运算符重载的格式是:返回类型 operator 运算符(参数列表) 这里我们重载+运算符,传入参数是一个结构Vector,返回类型也是Vector,这样当我们在使用+运算符时,如果+两边的参数是Vector类型的结构对象,则就会调用重载的方法,而不是普通的数字相加,这就可以解决许多科学计算问题,数学计算中运算符有许多不同的含义,这样我们就可以通过运算符重载来解决这个问题 ^_^
一:类型的安全性;
二:对象的相等比较;
三:运算符重载;
四:用户定义的数据类型转换
C#运算符和C语言有些差不多,对运算符的学习主要在运算符重载
运算符重载也许有些奇怪,为什么要重载运算符呢?^_^在有些时候尤其是数学上的运算需要,比如量子力学中矩阵运算比较多,那么*运算符在这里就不是简单的数字相乘的意思,我们需要重新定义*的意思,即所谓的运算符重载,下面举个简单的例子看运算符是怎么重载的
public static Vector operator +(Vector lhs, Vector rhs) //运算符+重载
{
Vector result = new Vector(lhs);
result.x += rhs.x;
result.y += rhs.y;
result.z += rhs.z;
return result;
}
这个例子我们首先定义了一个结构Vector,运算符重载的格式是:返回类型 operator 运算符(参数列表) 这里我们重载+运算符,传入参数是一个结构Vector,返回类型也是Vector,这样当我们在使用+运算符时,如果+两边的参数是Vector类型的结构对象,则就会调用重载的方法,而不是普通的数字相加,这就可以解决许多科学计算问题,数学计算中运算符有许多不同的含义,这样我们就可以通过运算符重载来解决这个问题 ^_^
相关文章推荐
- pp看书笔记---C#高级编程第九版 第七章 【运算符和类型强制转换】
- C#高级编程笔记 2016年10月8日运算符和类型强制转换
- explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符
- 关于c++ 强制转换类型运算符 static_cast、dynamic_cast、reinterpret_和const_cast
- C#学习记录 运算符与类型的强制转换
- 《csharp高级编程》 学习笔记 第六章 运算符和类型强制转换
- 标准c++中主要有四种强制转换类型运算符 const_cast,reinterpret_cast,static_cast,dynamic_cast
- [C#] as 和 is 运算符以及安全的类型强制转换
- C#语言学习之旅(5)--运算符和类型强制转换
- 第八章:运算符和类型强制转换
- c++ 强制转换类型运算符
- 四种强制转换类型运算符
- 第五章 运算符和类型强制转换(看书忽略的地方)
- 按位“或”运算符在带符号扩展操作数上使用;请考虑首先强制转换为较小的无符号类型
- 6_C# 高级编程(第六版)学习笔记——第6章 运算符和类型强制转换
- 标准C++的四种强制转换类型运算符
- 《C#高级编程》【第7章】运算符与类型强制转换 -- 学习笔记
- 强制转换类型运算符
- c++中主要有四种强制转换类型运算符
- [转载] 标准C++的四种强制转换类型运算符