问题标签 [immediate-window]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何通过 Visual Studio 中的即时窗口访问派生类的基类的成员?
使用 Visual Studio 中的即时(或监视)窗口(我使用的是 VS2015 社区版),可以在中断模式下访问类的属性或方法。但是,对于从另一个类派生的类,如果基类的成员已在派生类中被覆盖,我将找不到访问基类成员的方法,即使从代码中可以直接执行此操作,如本示例所示:
如果我运行此代码,输出(显然)是:
我是鸵鸟,不是动物
Name
如果我在类的属性里面设置断点Ostrich
,然后Name
在立即窗口中检查属性,输出如下图:
相反,如果我要求运行基类的实现,我希望输出是“动物”。事实上,我明白了:
这似乎不仅没有帮助,而且实际上是误导/不正确的:我宁愿返回一个错误而不是错误的答案。
使用 Watch 窗口,只显示派生类的实现:
有什么方法可以使用立即窗口来访问类基类的被覆盖成员?
logging - 打印/保存即时窗口结果 - 记录到文件
我想知道是否有办法将所有信息从立即窗口打印到文件中或直接返回到特定单元格?
当代码运行时,它会在“立即”窗口中显示结果,但此时我需要将它们复制/粘贴到单元格或另一个 .txt 文件中。因此,如果我可以将分析后的所有结果记录或打印到一个文件中(在我的桌面上)或者只是回到单元格中,那就太好了。
vba - 如何判断是否从即时窗口调用 Sub
一些我只想从即时窗口运行的潜艇,比如这个有点冒险的潜艇:
万一你无法解决;它向应用程序发送ctrl+a和Del,并具有清除当时光标周围的任何内容的效果。
我通过键入在即时窗口中使用它,即时窗口clear
中的所有内容都被删除。
正如您可能知道的那样,这个 Sub 非常危险并且相对容易意外调用。因此,我希望它仅在从即时窗口调用时运行
- 不是来自另一个子
- 不是来自表单控件
- 不是来自 ActiveX(虽然这实际上只是一个子)
- 不是来自用户调用(通过开发人员/宏选项卡)
而且也不是来自任何其他来源(我已经列出了所有这些,因为我认为即使您不能直接判断它是由即时窗口调用的,您也可以通过排除其他选项来间接判断)
这可能以编程方式进行吗?理想情况下,我只想在我的clear()
sub 开始时进行一个简单的布尔检查,告诉它什么都不做,除非被即时窗口调用。
注意
一种方法可能是通过使用调用堆栈(ctrl+L打开对话框),因为我注意到立即调用在堆栈中没有留下任何痕迹,而 subs 调用clear()
被列出,因此可以排除。但我不确定如何通过 VBA 访问它
c# - IEnumerable在代码中为假但在立即窗口中为真?
调试一些代码时,我遇到了一个“是 IEnumerable”比较,它在代码中令人困惑地评估为 false,但在即时窗口中为 true。
我想知道是否有人可以阐明为什么会发生这种情况?
例子:
(立即窗口)
vba - 将 debug.print 发送到不同的立即窗口
我在 Access 中设置了一个多线程例程,它同时打开多个 Access 文件并在每个文件中执行特定的功能。这些文件并行执行。我想将Debug.Print
消息发送到启动多线程的主文件。
我不确定它是否可以做到这一点,或者是否有更好的解决方案。
c# - 您如何在即时窗口中调用组装?
我正在尝试在 中进行一些调试Immediate Window
,您如何执行诸如Assembly.Get...()
?我唯一得到的是The name 'Assembly' does not exist in the current context
。我确实有using System.Reflection
我正在查看的堆栈,我什至有代码,例如
但是Assembly.GetEntryAssembly()
再次运行试图在Immediate Window
仍然无法正常工作。
不过,有一件事是我要调试的代码来自我dll
编译的其他代码。它有什么改变吗?它using System.Reflection;
在我正在尝试调试的文件中。
更新:
Assembly
实际上,很奇怪,当代码在另一个 dll 中时,我似乎无法访问。请参见下文,在您看到Hello.exe
我可以Assembly
正常访问的堆栈中,但是,一旦它尝试执行来自我的其他 dll 的代码,我就无法获取Assembly
.
更新2:
在回复温迪的评论时,这里是层次结构。我有 2 个 VS 解决方案,一个是构建一个巨大的合并程序集,供其他程序使用。所以在MyProgram.Assembly
解决方案中,我有几个项目,每个项目都会构建自己的 dll,然后我有我的Assembly
项目,这个项目会将所有其他 dll 合并在一起生成我的MyProgram.Assembly.dll
.
然后MyOtherProgram
将添加一个Reference
指向MyProgram.Assembly.dll
并像任何其他 dll 一样使用它。
我还想指出,代码本身可以访问Assembly
,而不是Immediate Window
,例如:
如果我在上面提到的代码处设置断点,然后输入Assembly
它Immediate Window
仍然会说未找到组装,但我可以看到Autos
可见设置正确。
请注意,我的程序没有任何问题,一切都按预期运行,但要到达那里,我必须编写代码并多次重新运行程序才能知道我从中得到了什么值,Assembly
直到我最终得到我想要的想要......只是它非常令人沮丧和烦人,无法Immediate Window
像我认为的那样使用它来调试它。
c# - 立即窗口中的静态类方法
如果我有一个FilePathHandler
具有静态方法的类FormatSubPath
并且我的代码中有断点,是否有办法在即时窗口或监视窗口中调用此方法?
用法;
如果我在“立即”窗口中编写上述内容以在断点期间即时测试某些内容,则会收到错误“错误 CS0103:当前上下文中不存在名称‘FilePathHandler’”。无论如何要这样做还是不可能?
c# - 从即时窗口执行时使用 LINQ 更新列表,而不是直接从代码执行
我面临一个非常奇怪的问题。我有一个列表,并试图从以下 for 循环中更新其内部结构字段之一。
在循环的第三行,您可以看到我使用 select 本身将值更改为 True。当我运行应用程序时,返回对象上的值看起来没有变化。但是,如果我们通过在循环中放置一个断点来在即时窗口中执行同一行,它会更新 Data 并反映在返回的对象AppUserDetail 上。我真的很困惑为什么它只能从即时窗口更新,而不是直接执行代码。
item.AppUserSecurityGroupXrefs.Where(a => list.Contains(a.SecurityGroupId)).Select(b => b.SecurityGroup).Select(c => c.Selected = true);