为什么我不能在即时窗口中声明新变量?

Tom*_*asi 18 .net debugging visual-studio

这可以节省我这么多时间.有时我发现自己在手表或即时窗口中写这样的东西:

MyObject.Function1.Fuction2.Fuction3.Fuction2
Run Code Online (Sandbox Code Playgroud)

相反,我可以声明几个新变量,并以更结构化的方式执行此操作.

但是不允许这样做.

有什么方法可以做到这一点吗?在未来的版本中是否会支持我想要的东西?

huh*_*uha 35

刚回答标题中的问题:

在VS2015中,您可以在即时窗口中声明变量.但是你必须用分号结束你的命令:

var abc = "abcdef";
Expression has been evaluated and has no value
Run Code Online (Sandbox Code Playgroud)

要么

var n = 7;
Expression has been evaluated and has no value
Run Code Online (Sandbox Code Playgroud)

要么

int o = 8;
Expression has been evaluated and has no value
Run Code Online (Sandbox Code Playgroud)

要显示结果,只需键入变量的名称:

abc
"abcdef"
Run Code Online (Sandbox Code Playgroud)

要么

?abc
"abcdef"
Run Code Online (Sandbox Code Playgroud)

要么

?abc;
"abcdef"
Run Code Online (Sandbox Code Playgroud)

要么

abc;
"abcdef"
Run Code Online (Sandbox Code Playgroud)

  • 来自[此处](https://docs.microsoft.com/en-us/visualstudio/ide/reference/immediate-window)的信息:问号 (?) 是 Debug.Print 的别名 (2认同)

AMi*_*ico 20

不要使用昏暗

jack = 12
? jack
12 {Integer}
Run Code Online (Sandbox Code Playgroud)


Bri*_*sen 5

使用 C#,您可以在调试期间在即时窗口中声明变量(老实说,我不知道它是否只是 VS2008 功能,但我刚刚在 VS2008 团队版中验证了它)。

您不能在 Watch 窗口中声明变量(实际上错误消息说“声明语句只允许在立即窗口中使用”)但您可以查看您在立即窗口中创建的任何变量。

此外,您不能var在立即窗口中声明变量时使用,但除此之外,您可以执行您所要求的操作。


Ogg*_*las 5

对@huha 答案的澄清。如果你看到error CS0726: '' is not a valid format specifier你可能只是忘记了一个.semicolon ;

例子:

DateTime t = DateTime.Parse("2020-01-01 00:00:00")
error CS0726: 't' is not a valid format specifier
t
error CS0103: The name 't' does not exist in the current context
DateTime t = DateTime.Parse("2020-01-01 00:00:00");
Expression has been evaluated and has no value
t
{2020-01-01 00:00:00}
    Date: {2020-01-01 00:00:00}
    Day: 1
    DayOfWeek: Wednesday
    DayOfYear: 1
    Hour: 0
    Kind: Unspecified
    Millisecond: 0
    Minute: 0
    Month: 1
    Second: 0
    Ticks: 637134336000000000
    TimeOfDay: {00:00:00}
    Year: 2020
Run Code Online (Sandbox Code Playgroud)