2013-01-05 37 views

回答

8

如果它鎖定了引​​用本身,鎖定將是無用的。問題是,引用本身是通過值複製的,所以你總是會鎖定一些立即被丟棄的臨時副本。

所以這不是它的工作原理。鎖是在引用引用的實例上獲得的,而不是引用本身。

+0

當你這樣說的時候很明顯。 – ytoledano

5

是獲得上o1一樣獲得對o2一綹一綹?

是的。

它適用於所謂的sync-block,它是每個對象實例的一部分。但在功能上,你可以把它看作是使用對象作爲字典中的關鍵字。

鎖定參考將與locking on a Value type相同,具有相同的問題。

0

是的,在引用.NET鎖(鎖定上的值的類型將導致一個錯誤)

+0

確實可以鎖定值類型,如果它是裝箱的。鎖定一個計算爲值類型的*表達式是編譯時錯誤。 –

2

是的,因爲鎖被拍攝的對象上,而不是在一個對象引用。 o2 = o1複製引用,而不是對象。