Grundsätzlich Sie sollten kein externes Objekt sperren, es sei denn, es handelt sich speziell um ein Sperrobjekt (z. B. die SyncRoot
-Eigenschaft für das nicht generische Objekt ICollection
wurde für) entworfen. Dies birgt das Risiko, dass andere "Benutzer" der Referenz ebenfalls auf ihm blockieren, was zu unerwünschtem Sperren oder sogar Deadlocks führt.
Observiously, this
und typeof()
sind per Definition externe Objekte. Zeichenfolgen sind unveränderlich und Zeichenfolgenliterale sind alle interniert, so dass die gleiche Referenz an verschiedenen Stellen auch dann verwendet werden kann, wenn Sie sie direkt in Ihrem Objekt zugewiesen haben.
Ich kenne keine StyleCop-Regel für diese, aber ich habe keinen guten Überblick darüber, was für StyleCop oder FxCop verfügbar ist, also könnte es durchaus etwas in der Wildnis geben, um nach diesen Fällen zu suchen. Ich würde nur für private Mitglieder, die keine Zeichenfolgen sind und in keiner Eigenschaft oder Methode direkt zurückgegeben werden, nach Synchronisierung suchen.
StyleCop prüft nur Stil Codierung und nicht Verhaltens. Wenn Sie hierfür eine Regel benötigen, ist FxCop das Werkzeug dafür. – Steven
Dumme Frage: Wenn ich mit der rechten Maustaste auf ein C# -Projekt in VS2010 klicke und 'Code-Analyse ausführen' wähle ... ist das FxCop, oder ein anderes Werkzeug? Auch: wenn ich einen Fall erkennen will, wenn eine Ausnahme neu geworfen wird ein Stack-Trace wurde abgeschnitten - ist das auch ein Job von FxCop? –
Seltsam, du fragst immer nach Werkzeugen, die die Find-Fähigkeit eines Editors nicht übertreffen können –