Ich habe den folgenden Code in meinem .Net 4 App:Warum ist dieser auf Strings basierende Contract.Ensure-Aufruf nicht bewiesen?
static void Main(string[] args) {
Func();
}
static string S = "1";
static void Func() {
Contract.Ensures(S != Contract.OldValue(S));
S = S + "1";
}
Dieses givens mich ein bei der Kompilierung nicht bewiesen Warnung gewährleistet:
warning : CodeContracts: ensures unproven: S != Contract.OldValue(S)
Was ist los? Dies funktioniert gut, wenn S eine ganze Zahl ist. Es funktioniert auch, wenn ich die Sicherung auf S == Contract.OldValue(S + "1")
ändere, aber das ist nicht, was ich tun möchte.