Hier ist eine Klasse, die, wenn sie mit Microsoft empfohlenen Mindestcodeanalyseregeln zusammengestellt, verursacht diese Warnung:CA2002 Warnung auf string []
CA2002: Microsoft.Reliability: 'TestClass.SomeProperty.get()' sperrt für eine Referenz vom Typ 'string []'. Ersetzen Sie dies durch eine Sperre gegen ein Objekt mit starker Identität.
public sealed class TestClass
{
public TestClass(string[] first, string[] second)
{
combinedStrings = Combined(first, second);
}
public string SomeProperty
{
get
{
lock (combinedStrings)
return "A string";
}
}
private readonly string[] combinedStrings;
private static string[] Combined(string[] first, string[] second)
{
var combined = new string[first.Length + second.Length];
first.CopyTo(combined, 0);
second.CopyTo(combined, first.Length);
return combined;
}
}
Warum würde ein String-Array ein schwacher Identität Typ in Betracht gezogen? Es ist nicht so, dass Arrays interniert werden oder so, oder? Und selbst wenn sie sein könnten, schließe ich mich nicht an eine statisch definierte an; Es ist zur Laufzeit dynamisch aufgebaut, also garantiert einzigartig.
Dies ist auf Visual Studio 2010, wenn es einen Unterschied macht.
@ M.kazemAkhgary [? Warum Schlösser (diese) sind {...} schlecht] (http://stackoverflow.com/questions/251391/why-is-: Sie können eine neue
object
tun, dass durch die Schaffung lockthis-bad) – stuartd