运算符的重载,用的地方不算是很多,但是作为语言基础,还是了解的好。
其中用到了关键字operator,在这里既然是运算符的重载,就要在了解重载的基础上去了解运算符的重载。其实是一样,C#语言已经帮助我们重载了一些运算符,像 + -等等。 下面是实例代码
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Vector vector = new Vector(1,2,3);
Vector firstVec = new Vector(vector);
Vector resultVec = vector + firstVec;
Console.Write(resultVec);
}
}
class Vector
{
private double x, y, z;
public double Z
{
get { return z; }
set { z = value; }
}
public double Y
{
get { return y; }
set { y = value; }
}
public double X
{
get { return x; }
set { x = value; }
}
/// <summary>
/// 以下是构造方法的重载
/// </summary>
public Vector()
{
X = 0;
Y = 0;
Z = 0;
}
public Vector(double x, double y, double z)
{
this.X = x;
this.Y = y;
this.Z = z;
}
public Vector(Vector objVector)
{
this.X = objVector.X;
this.Y = objVector.Y;
this.Z = objVector.Z;
}
/// <summary>
/// 重写超类object的toString()方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return "x的值:" + X + "y的值:" + Y + "z的值:" + Z;
}
/// <summary>
/// 赋值运算符的重载,关键字operator
/// </summary>
/// <param name="firstVec"></param>
/// <param name="secondVec"></param>
/// <returns></returns>
public static Vector operator +(Vector firstVec, Vector secondVec)
{
Vector obj = new Vector(firstVec);
obj.X += secondVec.X;
obj.y += secondVec.Y;
obj.Z += secondVec.Z;
return obj;
}
}
}
输出结果为 x的值为:2 y的值为: 4 z的值为6,结果计算正确。