手表价值如何不影响环境

How watch values doesn't affect the environment

在IDE中调试时,IDE如何知道如何在不改变环境(写入文件,将结果写入DB)的情况下计算监视值?

您的观察不能一概而论。 IDE 通常会在调试期间进行更改,尤其是当 属性 有副作用时。

Visual Studio

以下 C# 代码:

using System;

namespace EvaluateChangesValue
{
    class Program
    {
        static void Main()
        {
            var program = new Program();
            Console.WriteLine(program.Value);
            Console.ReadLine();
            Console.WriteLine(program.Value);
            Console.ReadLine();
        }

        private int member;

        private int Value => member++;
    }
}

在第一个 ReadLine() 处设置一个断点,然后将 program.Value 添加到监视 window 并查看值如何因 member++ 语句而增加。

日食

在 Java 和 Eclipse 中,做出相同的证明有点困难,因为这些原因:

  1. 在Java中是调用方法还是访问字段更加清晰
  2. 您需要 "Expressions" window,默认情况下不可用
  3. 重新评估需要用户交互

代码类似于C#:

public class Program {

    public static void main(String[] args)
    {
        Program p = new Program();
        System.out.println(p.member);
        System.console().readLine();
        System.out.println(p.member);
        System.console().readLine();
    }

    private int member;

    public int getMember()
    {
        return member++;
    }
}

以及截图: