public class OperatorOverload : MonoBehaviour
{
// Use this for initialization
void Start ()
{
ElementInfo elementInfo1 = new ElementInfo();
elementInfo1.x = 1.0;
elementInfo1.y = 1.0;
ElementInfo elementInfo2 = new ElementInfo();
elementInfo2.x = 2.0;
elementInfo2.y = 2.0;
ElementInfo elementInfo3 = new ElementInfo();
elementInfo3.x = 3.0;
elementInfo3.y = 3.0;
elementInfo1 = elementInfo1 + elementInfo2;
if (elementInfo1== elementInfo3)
{
Debug.Log("elementInfo1与elementInfo3信息一致");
}
else
{
Debug.Log("elementInfo1与elementInfo3信息不一致");
}
}
// Update is called once per frame
void Update ()
{
}
}
///---------运算符重写操作类的对象进行运算----------------
public class ElementInfo
{
public double x, y;
public ElementInfo()
{ x = y = 0; }
public ElementInfo(double x, double y)
{
this.x = x;
this.y = y;
}
public static ElementInfo operator +(ElementInfo info1, ElementInfo info2)
{
ElementInfo Info = new ElementInfo();
Info.x = info1.x + info2.x;
Info.y = info1.y + info2.y;
return Info;
}
public static ElementInfo operator -(ElementInfo info1, ElementInfo info2)
{
ElementInfo Info = new ElementInfo();
Info.x = info1.x - info2.x;
Info.y = info1.y - info2.y;
return Info;
}
public override string ToString()
{
return "(" + x + "," + y + ")";
}
///-----------------operator == 和 operator !=成对出现
public static bool operator ==(ElementInfo info1, ElementInfo info2)
{
if (object.Equals(info1, null) || object.Equals(info2, null))
{
return object.Equals(info1, info2);
}
return info1.x == info2.x && info1.y == info2.y;
}
public static bool operator !=(ElementInfo info1, ElementInfo info2)
{
if (object.Equals(info1, null) || object.Equals(info2, null))
{
return !object.Equals(info1, info2);
}
return info1.x != info2.x || info1.y != info2.y;
{
// Use this for initialization
void Start ()
{
ElementInfo elementInfo1 = new ElementInfo();
elementInfo1.x = 1.0;
elementInfo1.y = 1.0;
ElementInfo elementInfo2 = new ElementInfo();
elementInfo2.x = 2.0;
elementInfo2.y = 2.0;
ElementInfo elementInfo3 = new ElementInfo();
elementInfo3.x = 3.0;
elementInfo3.y = 3.0;
elementInfo1 = elementInfo1 + elementInfo2;
if (elementInfo1== elementInfo3)
{
Debug.Log("elementInfo1与elementInfo3信息一致");
}
else
{
Debug.Log("elementInfo1与elementInfo3信息不一致");
}
}
// Update is called once per frame
void Update ()
{
}
}
///---------运算符重写操作类的对象进行运算----------------
public class ElementInfo
{
public double x, y;
public ElementInfo()
{ x = y = 0; }
public ElementInfo(double x, double y)
{
this.x = x;
this.y = y;
}
public static ElementInfo operator +(ElementInfo info1, ElementInfo info2)
{
ElementInfo Info = new ElementInfo();
Info.x = info1.x + info2.x;
Info.y = info1.y + info2.y;
return Info;
}
public static ElementInfo operator -(ElementInfo info1, ElementInfo info2)
{
ElementInfo Info = new ElementInfo();
Info.x = info1.x - info2.x;
Info.y = info1.y - info2.y;
return Info;
}
public override string ToString()
{
return "(" + x + "," + y + ")";
}
///-----------------operator == 和 operator !=成对出现
public static bool operator ==(ElementInfo info1, ElementInfo info2)
{
if (object.Equals(info1, null) || object.Equals(info2, null))
{
return object.Equals(info1, info2);
}
return info1.x == info2.x && info1.y == info2.y;
}
public static bool operator !=(ElementInfo info1, ElementInfo info2)
{
if (object.Equals(info1, null) || object.Equals(info2, null))
{
return !object.Equals(info1, info2);
}
return info1.x != info2.x || info1.y != info2.y;
}
///-----------------重写运算符核心重写Equals方法-----------------
public override bool Equals(object obj)
{
TreeNode<T> treeNode = obj as TreeNode<T>;
if(treeNode == null)
{
return false;
}
else
{
return this.m_treeNodeInfo == treeNode.m_treeNodeInfo && this.GetCurrentTreeNodeLevel == treeNode.GetCurrentTreeNodeLevel;
}
}