我的.Net 4应用程序中有以下代码:
static void Main(string[] args) {
Func();
}
static string S = "1";
static void Func() {
Contract.Ensures(S != Contract.OldValue(S));
S = S + "1";
}
Run Code Online (Sandbox Code Playgroud)
这让我在编译时确保未经证实的警告:
warning : CodeContracts: ensures unproven: S != Contract.OldValue(S)
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?如果S是整数,这可以正常工作.如果我将Ensure更改为S == Contract.OldValue(S + "1"),它也可以工作,但这不是我想要做的.