2010-08-03 60 views

回答

3

垃圾回收器爲每個對象分配一個唯一的ID,這是默認的GetHashCode實現使用的內容而不是內存位置。

編輯這實際上比實際更復雜一點。不想誤導任何人,所以你們應該更喜歡Jon Skeet's answer on the topic

+1

+1既正確的答案,以及您的鏈接:) – SqlRyan 2010-08-03 05:01:42

+0

我不認爲該鏈接有正確的信息,至少不是最新版本的.NET。當我調用一個對象的鎖時,我看到它的內存使用增加,與創建一個同步塊一致。但是當我調用GetHashCode時,我沒有看到任何內存使用增加,所以我不認爲它會創建一個同步塊。 – fish 2010-08-03 05:50:35

+0

@fish:在我看來,這不是一種非常科學的測試方法。你如何知道內存增加與同步塊相關,而不是.NET使用Monitor.Enter創建的其他內容? – zneak 2010-08-03 12:05:11