手表价值如何不影响环境
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 中,做出相同的证明有点困难,因为这些原因:
- 在Java中是调用方法还是访问字段更加清晰
- 您需要 "Expressions" window,默认情况下不可用
- 重新评估需要用户交互
代码类似于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++;
}
}
以及截图:
在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 中,做出相同的证明有点困难,因为这些原因:
- 在Java中是调用方法还是访问字段更加清晰
- 您需要 "Expressions" window,默认情况下不可用
- 重新评估需要用户交互
代码类似于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++;
}
}
以及截图: