Ich habe Code, der ungefähr so aussieht:
%Vor% Sollte das Any
Konto nicht auf Index 0 prüfen? Mache ich etwas falsch, oder erkennt CodeContracts diesen Fall einfach nicht?
LINQs .Any
und der Objektaccessor [0]
sind nicht ausreichend miteinander verknüpft, sodass Code Contracts nicht als identisch betrachtet werden können. Da this.bar
sowieso mit einem Standardwert initialisiert werden würde, ist es wahrscheinlich am besten, dies einfach zu tun:
Dies würde nicht nur die Möglichkeit der Fadensicherheit lösen, auf die AakashM hinweist, sondern es ist auch etwas performanter. Da Sie wissen, dass this
eine Sammlung ist (und daher .Count
hat), wäre eine andere Option:
Keine der LINQ-Methoden ist mit der Contracts
API annotiert. Wenn der Verifizierer mit dieser Methode ausgeführt wird, erhält er keine neuen Daten über den Wert von Count
. Deshalb sehen Sie die Warnung.
Eine Möglichkeit, dies zu umgehen, ist die Verwendung von Assume
, um dem Verifizierer mitzuteilen, dass die Zählung zu diesem Zeitpunkt gültig ist.
Tags und Links .net c# code-contracts