环境是VS 2010 Express,C#。调试与不调试时,以下代码会产生不同的结果。
MyClass.Counter++;
Debug.Write(MyClass.Counter.ToString());
db.ExecuteCommand("update mytable set pct = {0}, reps = {1},is_active = 0," +
"completed = 1,date_completed={2} " +
"where my_id = {3} and myother_id = {4} and yetanother_id = 50",
aValue, MyClass.Counter, DateTime.Now, AnId, AnotherId);
当处于调试模式或使用Debug.Write语句时,如果MyClass.Counter从零开始,则更新时数据库上的结果为1 ......正如预期的那样。
当我在没有调试器或使用Debug.Write语句的情况下运行此代码时,数据库上的结果是2.我尝试了所知的一切,以确定整数如何从一个++增加到0到2。我甚至使用了临时变量..i.e。 int i = MyClass.Counter; i = i + 1;然后在ExecuteCommand中使用i ....结果总是一样的,我从0到2。
感谢您的回复。
答案 0 :(得分:0)
假设
public class MyClass
{
public static int Counter;
}
我建议:
db.ExecuteCommand("update mytable set pct = {0}, reps = {1},is_active = 0," +
"completed = 1,date_completed={2} " +
"where my_id = {3} and myother_id = {4} and yetanother_id = 50",
aValue, MyClass.Counter++, DateTime.Now, AnId, AnotherId);
在使用初始值后,这将增加Counter
。我不知道你怎么会在调试视图和非调试中有不同的输出。