(多年后回头学习c#)被遗忘的世界 二 运算符重载

以一个结构Vector,来说明运算符重载,这个Vector结构表示一个三维矢量三维矢量只是3个double数字的一个
集合,说明物体和原点之间的距离,表示数字的变量是x、 y和x表示物体与原点在x方向上的
距离,y表示它与原点在y方向上的距离,z表示高度。把这3个数字组合起来,就得到总距离。例
如(3.0,3.0,1.0)表示物体与原点在x方向上的距离是3个单位,与原点在y方向上的距离是

3个单位,高度为1个单位。矢量可以与矢量或数字相加或相乘。这与使用Vector结构的方式一样。

下面是Vector的定义包含成员字段、构造函数和重写的一个toString()方法,以便轻松地
查看VeGtor的内容,最后是运算符重载:

namespace Wrox.PrOCsharp.ooCsharp


 struct Vector
 {

  public double x, y, z;
  public Vector(double x,  double y,  doub1e z)
 {
  this.x=x;
  this.y= y;
  this.z = z;
  }
 public Vector(Vector rhs)
 {
    x= rhs.x;
    y= rhs.y;
    z = rhs. z;
  }

 public override string Tostring()

 {
    return  "("+x+"."+y+"."+z+")";
 }

}

下面是Vector结构的有趣部分
——


+” 运算符提供支持的运算符重载:
public static Vector operator + (Vector lhs, Vector rhs)
{
Vector result = neW Veotor(lhs);
result.x += rhs.X;
result.y += rhs.y;
result.z += rhs.z;
return result;′
}
这部分代码与声明方法的代码完全相同,显然,它返回一个矢量,其中包含前面定义的lhs和 .
rhs的和,即把x、 y和z成员分别相加。
下面需要编写一些简单的代码来测试Vector结构:
static Void Main()
{
vector vect1, VeCt2`,Vect3;
vect1 = new Vector(3.0,  3.0, 1.0);
vect2 = new Vector(2.0,-4.0,-4.0);
vect3 =vect1 +vect2;
Console.WriteLine( “vect1 = “+ vect1.Tostring());
Console.WriteLine( “vect2 = “+ veot2.Tostring());

 Console.WriteLine( “vect3 = “+ vect3.ToString());
}
把这些代码另存为Vectors.cs,编译并运行它,结果如下

vect1 = ( 3, 3,1 )
vect2 = ( 2,4.,-4 )
vect3 = ( 5,-1,-3 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值