Sagen wir, wir wollen Gewindesynchronisation erreichen und wir verwenden dafür die Sperre. Aber wenn eine Frage gestellt wird, ist die Sperre auf das Objekt oder auf die Referenz, Wie beantworten wir diese Frage?C# Objekt oder Referenz sperren? Wie antwortest du das?
private static readonly object doSomethingLock = new object();
public static void DoSomething (SomeObject o)
{
lock(doSomethingLock)
{
o.Update();
// etc....
}
}
Sie benötigen immer ein Objekt, um den Sperrstatus zu speichern. Die Verwendung eines Objekts erfordert immer die Verwendung einer Referenz. Sie beantworten die Frage mit den Worten: "Warum fragst du? Es ist keine sinnvolle Frage!" –
Sie können niemals mehrere verschiedene Referenzen auf dasselbe Objekt haben, und die gleiche Referenz wird sich nie auf verschiedene Objekte beziehen, so dass Sie niemals einen Unterschied zwischen dem Sperren auf der Referenz oder dem Sperren auf dem Objekt, auf das verwiesen wird, beobachten können. Was auch immer die Implementierung tut, Sie können es nie von der anderen unterscheiden. – Servy