在調試,爲什麼當你看到一個GUID的對象,也有非公共成員內部奇怪的變量?這是我調試中顯示的內容:C#GUID值奇怪
guid={7b15cd1-69f3-e2111-bd64-001dd8b82a4f}
_a = 2065026481
_b = 27123
_c = -7663
_d = 189
_e = 100
_f = 0
_g = 29
_h = 216
_i = 184
_j = 42
_k = 79
在調試,爲什麼當你看到一個GUID的對象,也有非公共成員內部奇怪的變量?這是我調試中顯示的內容:C#GUID值奇怪
guid={7b15cd1-69f3-e2111-bd64-001dd8b82a4f}
_a = 2065026481
_b = 27123
_c = -7663
_d = 189
_e = 100
_f = 0
_g = 29
_h = 216
_i = 184
_j = 42
_k = 79
guid={7b15cd1-69f3-e2111-bd64-001dd8b82a4f}
_a = 2065026481 // = 7b15cd1
_b = 27123 // = 69f3
_c = -7663 // = e2111
_d = 189 // = bd
_e = 100 // = 64
_f = 0 // = 00
_g = 29 // = 1d
_h = 216 // = d8
_i = 184 // = b8
_j = 42 // = 2a
_k = 79 // = 4f
這並不奇怪。通過運行Calc.exe來啓動Windows計算器。點擊查看+程序員選擇內置的StackOverflow用戶模式。鍵入「2065026481」並單擊十六進制單選按鈕。注意與{guid}值的第一部分的相似性。
重複其他部分,你會看到比賽。
十六進制是程序員的方式與16分的手指,而不是10具有16個手指是計算機的構建方式更好的匹配計數。它們使用2而不是10的冪。只有1和0,一個十六進制數字覆蓋4位。
由此得出的較大結論是Guid是而不是只是一個隨機數。它由部分組成。部分帶有一個意思,你可以閱讀RFC 4122,如果你想獲得它的底部。如果你想了解機器的工作方式,這是一個好主意。每個木匠都應該知道錘子是如何工作的。但他們必須先了解指甲,我建議this book知道釘子是什麼樣子。
我不知道GUID的整個映射,但是那些內部變量只是代表了整個GUID的部分。不同的是,調試器顯示_a,_b等在基體10,而GUID以十六進制示出。
在你的例子中,如果我們看最後兩部分,它們映射到guid的最後4位數。
_j = 42 (Dec) 2a (Hex)
_k = 79 (Dec) 4f (Hex)
爲什麼你認爲這些值是奇怪的(如果它是私有的)? –
嗯..也許他們與Guid結構的實施有關? (...並關閉) – spender
隨時瞭解:http://www.jetbrains.com/decompiler/ – spender