gethashcode注意點:
gethashcode方法的預設實現不保證針對不同的物件返回唯一值。而且,.net framework 不保證gethashcode方法的預設實現以及它所返回的值在不同版本的 .net framework 中是相同的。因此,在進行雜湊運算時,該方法的預設實現不得用作唯一物件識別符號。
gethashcode方法可以由派生型別重寫。值型別必須重寫此方法,以提供適合該型別的雜湊函式和在雜湊表中提供有用的分布。為了獲得最佳結果,雜湊**必須基於例項欄位或屬性(而非靜態欄位或屬性)的值。
如果兩個物件的比較結果相等,則每個物件的gethashcode方法都必須返回同乙個值。但是,如果兩個物件的比較結果不相等,則這兩個物件的gethashcode方法不一定返回不同的值。
乙個物件的gethashcode方法必須總是返回同乙個雜湊**,但前提是沒有修改過物件狀態,物件狀態用來確定物件的 equals 方法的返回值。請注意,這僅適用於應用程式的當前執行,再次執行該應用程式時可能會返回另乙個雜湊**。
為了獲得最佳效能,雜湊函式必須為所有輸入生成隨機分布。
string
類提供的 gethashcode 方法的實現為相同的字串值返回相同的雜湊**。因此,如果兩個 string 物件表示相同的字串值,則它們返回相同的雜湊**。
例如:string str1 = "hello world";
string str2 = "hello world";
則str1.gethashcode() == str2.gethashcode().
重寫gethashcode的派生類還必須重寫 equals,以保證被視為相等的兩個物件具有相同的雜湊**;否則,hashtable 型別可能無法正常工作。
例如通過reflector檢視int型別的gethashcode的實現如下:
public
override
intgethashcode()
又如下面的例子:
using system;
public class sometype {
public override int gethashcode() {
return 0;
public class anothertype {
public override int gethashcode() {
return 1;
public class lasttype {
public override int gethashcode() {
return 2;
public class myclass {
sometype a = new sometype();
anothertype b = new anothertype();
lasttype c = new lasttype();
public override int gethashcode () {
return a.gethashcode() ^ b.gethashcode() ^ c.gethashcode(); 0
0 0(請您對文章做出評價)
mysql 注意 mysql 注意點
mysql 優化 每個innodb 表都要有乙個主鍵 限制表上索引的數量,避免建立重複和冗餘索引 注意合理選擇復合索引鍵值的順序 優先選擇符合儲存需要的最小的資料型別 varchar n 中的n 代表的是字元數,而不是位元組數 使用utf8 儲存漢字 varchar 255 765 個位元組 過大的...
隨筆注意點
32位編譯器下,int占用2個位元組,long int 占用4個位元組,long long int 占用8個位元組 64位編譯器下,int占用4個位元組,long int 占用8個位元組,long long int 依然占用8個位元組 一 1,c程式需要有main函式 int main xcode3...
開發注意點
1.不要在mybatis的xml檔案裡map使用巢狀查詢,如 property inte ceinfo column inte ce code select selectbyinte cecode 可能會導致很嚴重的效能問題 2.定義固定的返回格式類 如 public class effect 3....