正文

游戲數(shù)學(xué)(8)

精通C#游戲編程 作者:(英)斯庫(kù)勒


 

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í)使用了大量的代碼。唯一有點(diǎn)新奇的函數(shù)是GetHashCode。哈希值是一個(gè)數(shù)值,嘗試(但是并不保證)唯一地標(biāo)識(shí)一個(gè)對(duì)象,C#的Dictionary結(jié)構(gòu)中用到了哈希值。當(dāng)重寫(xiě)相等性時(shí),也需要重寫(xiě)哈希值,否則編譯器很難知道哪一個(gè)才是正確的哈希值。

8.2.4  向量加法、減法和乘法

向量加法操作很簡(jiǎn)單,就是把第一個(gè)向量的各個(gè)成員與第二個(gè)向量的各個(gè)成員分別相加。下面的向量執(zhí)行向量加法。


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)