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

推荐订阅源

C
Cisco Blogs
爱范儿
爱范儿
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
Jina AI
Jina AI
Project Zero
Project Zero
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tenable Blog
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
月光博客
月光博客
雷峰网
雷峰网
G
Google Developers Blog
V
V2EX
T
Tor Project blog
罗磊的独立博客
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy International News Feed
S
Securelist
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
小众软件
小众软件
Scott Helme
Scott Helme
I
Intezer
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LINUX DO - 最新话题
N
News | PayPal Newsroom
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
Latest news
Latest news
AWS News Blog
AWS News Blog
Apple Machine Learning Research
Apple Machine Learning Research

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