惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Fintech技术汇

conda环境导出/导入 Element UI - el-tree组件显示横向滚动条 linux-断开SSH终端连接后,保持程序依然运行 linux命令 GO单元测试-工具 开源协议 JKS证书转换 Moodle环境搭建 githubusercontent和github加速镜像 Ubuntu下解决Git保存用户名和密码的方法 MySql操作 NPM设置和恢复淘宝镜像 Spring Boot实现热部署 Docker命令 MySql忘记密码后重置 IntelliJ IDEA 推荐设置讲解 Spring Boot VS Spring Cloud 分布式RPC框架ZeroC Ice简介 如何调试没有源码的.Net程序 从msi解压文件
Visual Studio中,你应该知道的几个Immediate Window小技巧
Fintech技术汇 · 2020-08-09 · via 博客园 - Fintech技术汇

作为.NET老司机的你,一定在Debug的时候使用过VS的Immediate Window,但是,你是否了解它的以下功能呢?如果是.NET新手,莫慌,它非常简单易用,Debug并动手实践一下,就可立马掌握。下面我们一起看看吧:

首先,通过Debug->Windows->Immediate或者快捷键Ctrl+D,I打开Immediate窗口,如下图所示:

接下来一起看看它的几个使用方法

1. 访问非公有成员,执行语句如Linq

这是Immediate Window的基本功能,也是最通常的用法,在debug的时候,我们可以在immediate window里执行诸如访问属性/域,执行Linq等的操作:

2. 访问异常和返回值

在deug的时候,你有没有遇到过类似下面的代码,第一部分catch住了异常,但啥也没干,第二部分代码调用的函数有返回值,但是并未声明本地变量去接收返回值。当然这都不是好代码,然而项目大了,啥人都有,有时就能碰到这种代码,假设你在debug时,想知道异常是啥,GetPersonsAgeUnder18返回了啥,咋办?答案请看截图:

    try
    {
        MethodWhichThrowException();
    }
    catch
    {
    }
    GetPersonsAgeUnder18(persons);


3. 通过ID访问对象

有时候为了追踪一个对象,我们会给该对象生成一个Id,然后无论在什么上下文里,我们都可以通过这个Id来访问该对象,注意:这个Id并不会阻碍对象的垃圾收集。请看下面的例子:

4. 重新调用函数

一个函数调用完了,如果想重新进入函数体debug怎么办,一种方法是有鼠标拖过去,另一种就是使用Immediate Window直接调用,这里假设GetPersonsAgeUnder18以及调用完了,但是想debug看看它内部的实现,怎么做?首先,再GetPersonsAgeUnder18中下一个断点,然后再Immediate Window中调用GetPersonsAgeUnder18, VS会自动在断点处停下,如下所示

5. 消除边界效应

通过上面的例子,我们可以看出在Immediate Window中调用函数,与执行正常代码中调用并无区别,所以如果函数改变了类的状态,那么你在Immediate Window中调用该函数,同样会改变类的状态,那么有没有办法让Immediate Window中执行的函数不改变类的状态呢?方法就是在函数调用后面加上nse,即no side effective, 请看下面的例子:

需要说明的是,nse并不是对所有的函数都有效,只是对一些简单的函数有效。完整代码请访问:https://github.com/DerekLoveCC/Writings/tree/master/Article/VSImmediateWindow/code/ImmediateWindowDemo

Fintech技术汇