您的位置:首页 > 编程语言 > C#

C#高级语法基础知识总结4——运算符

2012-07-16 22:25 756 查看
比较引用类型的相等性

ReferenceEquals() 静态方法,不能重写,如果提供的两个引用引用同一个对象实例,则返回true,否则就返回false。Null=null

虚拟的Equals(),可在自己的类中重写

静态的Equals()方法

比较运算符(==)

比较值类型的相等性

采用与引用类型相同的规则:ReferenceEquals()用于比较引用,Equals()用于比较值,比较运算符可以看做一个中间项。但最大的区别是值类型需要装箱,才能把它们转换为引用,进而才能对它们执行方法。

运算符重载

运算符重载

Vector vector1, vector2, vector3;

vector1 = new Vector(3.0, 3.0, 1.0);

vector2 = new Vector(2.0, -4.0, -4.0);

vector3 = vector1 + vector2;

Console.WriteLine("vector1={0}" , vector1.ToString());

Console.WriteLine("vector2={0}", vector2.ToString());

Console.WriteLine("vector3={0}", vector3.ToString());

vector1 = 2 * vector1;

Console.WriteLine("2*vector1={0}", vector1.ToString());

struct Vector

{

private double _x, _y, _z;

public double X { get { return _x; } set { _x = value; } }

public double Y { get { return _y; } set { _y = value; } }

public double Z { get { return _z; } set { _z = value; } }

public Vector(double x, double y, double 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 + ")";

}

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;

}

//数和向量相乘

public static Vector operator *(double lhs, Vector rhs)

{

return new Vector(lhs * rhs._x, lhs * rhs._y, lhs * rhs._z);

}

public static Vector operator *(Vector lhs, double rhs)

{

return rhs * lhs;

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: