public override int GetHashCode()
{
return (int)X ^ (int)Y ^ (int)Z;
}
public static bool operator ==(Vector v1, Vector v2)
{
// If they're the same object or both null, return true.
if (System.Object.ReferenceEquals(v1, v2))
{
return true;
}
// If one is null, but not both, return false.
if (v1 == null || v2 == null)
{
return false;
}
return v1.Equals(v2);
}
public override bool Equals(object obj)
{
if (obj is Vector)
{
return Equals((Vector)obj);
}
return base.Equals(obj);
}
public static bool operator !=(Vector v1, Vector v2)
{
return !v1.Equals(v2);
}
重載= =操作符時使用了大量的代碼。唯一有點新奇的函數(shù)是GetHashCode。哈希值是一個數(shù)值,嘗試(但是并不保證)唯一地標識一個對象,C#的Dictionary結(jié)構(gòu)中用到了哈希值。當重寫相等性時,也需要重寫哈希值,否則編譯器很難知道哪一個才是正確的哈希值。
8.2.4 向量加法、減法和乘法
向量加法操作很簡單,就是把第一個向量的各個成員與第二個向量的各個成員分別相加。下面的向量執(zhí)行向量加法。