在调试与非调试时简单添加的结果不同

时间:2010-11-14 01:35:14

标签: c# .net linq

环境是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。

感谢您的回复。

1 个答案:

答案 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 。我不知道你怎么会在调试视图和非调试中有不同的输出。