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

推荐订阅源

Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tenable Blog
C
Cybersecurity and Infrastructure Security Agency CISA
GbyAI
GbyAI
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
AWS News Blog
AWS News Blog
Security Latest
Security Latest
L
LINUX DO - 热门话题
Blog — PlanetScale
Blog — PlanetScale
T
Threatpost
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
S
Securelist
I
Intezer
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Heimdal Security Blog
T
The Exploit Database - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
The Register - Security
The Register - Security
NISL@THU
NISL@THU
S
Schneier on Security
M
MIT News - Artificial intelligence
The Last Watchdog
The Last Watchdog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
Know Your Adversary
Know Your Adversary
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
美团技术团队
W
WeLiveSecurity
P
Privacy International News Feed
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
小众软件
小众软件
博客园 - 【当耐特】
P
Proofpoint News Feed
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog

博客园 - 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技术汇