[Unity]數據唯一標識hashCode於instanceID有什麼區別

 

hashCode用於區分不同數據。

顯示結果:

intDatas[0] .HashCode:-553279680  int_A:11///HashCode:11  int_B:12///HashCode:12
intDatas[1] .HashCode:896162432  int_A:21///HashCode:21  int_B:22///HashCode:22

由於intDatas[0]和intDatas[1]只是數據沒有實體GameObject,因此只有HashCode沒有instenceID

 

測試代碼

...{
...

    IntData[] intDatas;
    // Use this for initialization
    void Start()
    {
        test_();

    }

    private void test_()
    {
        IntData intData1 = new IntData();
        intData1.int_A = 11;
        intData1.int_B = 12;

        IntData intData2 = new IntData();
        intData2.int_A = 21;
        intData2.int_B = 22;
        intDatas = new IntData[2] { intData1, intData2 };

        for (int i = 0; i < intDatas.Length; i++)
        {
            Debug.Log("intDatas[" + i + "] .HashCode:" + intDatas[i].GetHashCode() + "  int_A:" + intDatas[i].int_A + "///HashCode:" + intDatas[i].int_A.GetHashCode() +
                 "  int_B:" + intDatas[i].int_B + "///HashCode:" + intDatas[i].int_B.GetHashCode());
        }

    }
...
}

public class IntData
{
    public int int_A;
    public int int_B;
}

 如果數組成員的數值相同,會是什麼結果

intDatas[0] .HashCode:539807424  int_A:11///HashCode:11  int_B:12///HashCode:12
intDatas[1] .HashCode:1989249536  int_A:11///HashCode:11  int_B:12///HashCode:12
...
        intData1.int_A = 11;
        intData1.int_B = 12;
...
        intData2.int_A = 11;
        intData2.int_B = 12;
...

如果 再次運行,HashCode是否發生變化

intDatas[0] .HashCode:2141205056  int_A:11///HashCode:11  int_B:12///HashCode:12
intDatas[1] .HashCode:-704320128  int_A:11///HashCode:11  int_B:12///HashCode:12

的確會發生變化,只是每一次運行,確定唯一性。

 

 

相關資料:

1.[Unity][數據存儲][存檔]唯一標識instanceID有啥用

2.

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章