【译】在调试时轻松导航代码委托
委托在现代代码中无处不在;委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。开发人员使用委托将方法作为参数传递给其他方法。您可能熟悉的一个例子是事件处理程序。处理程序是可以通过委托调用的方法。委托让我想起 C++ 的函数指针,当然委托是完全面向对象的。
有几种方式来表示委托,例如,Func 委托。此泛型委托表示接受一个或多个参数并返回指定类型值的方法。下面是一个示例(带有lambda表达式):
Func<int, int> Multiplier = n => n * 5;int val = Multiplier(5);Console.WriteLine(val);
这个概念的最新变体是 Action,它提供了更方便的简写。使用 Action时,不必显式地定义一个用单个参数封装方法的委托。下面是一个例子:
Action<string> outputFunc = GetOutputRoutine();outputFunc("Hello, World!");static Action<string> GetOutputRoutine(){ return MyConsoleWriter;}static void MyConsoleWriter(string input){ Console.WriteLine("Console: {0}", input);}
所以,这是一堂很好的课,但我为什么要提到这些呢?虽然我发现在编写代码时像传递参数一样传递方法很方便,但我也希望在调试时更容易跟踪。当然,您可以轻松地单步执行这些方法,但我通常希望在单步执行之前或之后快速导航到由委托表示的底层代码,随着 Visual Studio 17.10 的最新更新,这非常容易。
当您在调试时暂停时,您可以将鼠标悬停在任何委托上并获得一个方便的跳转,这里是一个带有Func委托的示例。
在本例中,Go to Source 清楚地表明,您将被重定向回 lambda 表达式。
请注意,这不仅仅适用于托管代码的情况,它还支持 C++ 函数指针和 std::function。
我们感谢您的反馈,帮助我们改进 Visual Studio,使其成为您最好的工具!您可以通过开发者社区与我们分享反馈,通过发送反馈来报告问题或分享您的建议,推动对新功能或现有功能的改进。
请在 Twitter 上与 Visual Studio Debugger 团队保持联系。
原文链接:https://devblogs.microsoft.com/visualstudio/easily-navigate-code-delegates-while-debugging/
GitHub标星26万!Python算法新手入门大全
问耕 发自 凹非寺
量子位 出品 | 公众号 QbitAI
今天推荐一个Python学习的干货。
几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万。这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各种算法的代码实现。
传送门在此:
https://github.com/TheAlgorithms/Python
简单介绍下。
算法的基本原理讲解 部分,包括排序算法、搜索算法、插值算法、跳跃搜索算法、快速选择算法、禁忌搜索算法、加密算法等。
这部分内容,主要介绍各种不同算法的原理,其中不少介绍还给出了动态示意图,以更初学者能够更直观的理解。搬运几个示例:
鸡尾酒排序算法
鸡尾酒(Cocktail shaker)排序,也叫双向冒泡排序(Bidirectional Bubble Sort)等。这是冒泡排序的一种变体。不同之处在于,冒泡排序是从低到高比较序列里的每个元素,而鸡尾酒排序从两个方向(低到高、高到低)来回排序,效率更高。
快速选择算法
快速选择(Quick Select)算法,用于查找无序列表中的第k个最小元素。这种算法及其变体,是实践中最常用的高效选择算法。
快速选择算法与快速排序算法类似,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。
ROT13加密算法
Rot13(rotate by 13 places)是一种非常简单的替换加密算法,用于加密26个英语字母。方法是:把每个字母用其后第13个字母代替。
当然这种算法破解起来也很简单,只需要反向替换就行,所以这种算法几乎提供不了什么加密安全性,并且经常作为弱加密的典型案例。
此外,这个项目还给出了多种Python算法的代码实现 。
包括二叉树(Binary Tree)、动态规划(Dynamic Programming)、散列(Hashes)、线性代数、机器学习、神经网络等。
比方在机器学习这个类别里,给出了随机森林分类、随机森林回归、朴素贝叶斯、决策树、k值聚类、线性回归、逻辑回归、感知机等。
这里截个梯度下降代码实现的图,做个示意。
希望这个项目对你学习有帮助,再给一次传送门:
https://github.com/TheAlgorithms/Python
还有一事。
这几个印度小哥,不仅仅搞了一个学Python的项目,类似的资源收集项目还包括:Java、C、C++、Scala、C#等……
— 完 —
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
相关问答
北斗 导航 最纯龙头股有哪些?-股票知识问答-我爱卡[回答]北斗导航最纯龙头股为以下这类:1.北斗星通。它的股票代码是:002151。2.振芯科技。它的股票代码是:300101。3.天奥电子。它的股票代码是:002935。4...
凯越 导航 显示错误 代码 001怎么修?汽车导航显示错误代码001是因为信号中断了。这个代码一般出现在倒车的时候,如果启动不了,如果启动不了,那就是硬件问题,只能进行维修。车载导航是利用车载GPS...
长城炮 导航 配置 代码 ?长城炮导航的配置代码是236845使用方法如下:1、首先打开汽车导航仪进入主页面,点击“找目的地”,2、然后输入目的地,3、接着找到“设置目的地”选项,根...
汽车 导航 显示错误 代码 001是什么意思?你好,车主!这是信号中断的原因,这个代码一般出现在你倒车的时候出现。【汽车有问题,问汽车大师。4S店专业技师,10分钟解决。】你好,车主!这是信号中断的原因,...
导航 一体机故障 代码 001好修吗?你得去维修站差下故障代码信息一般一体机是不能解体维修的,只能更换总成建议还是去维修站看看吧你得去维修站差下故障代码信息一般一体机是不能解体维修的,...
车机系统错误 代码 001是什么意思?汽车导航显示错误代码001是因为信号中断了。这个代码一般出现在倒车的时候,如果启动不了,如果启动不了,那就是硬件问题,只能进行维修。车载导航是利用车载GPS...
帕萨特 导航 显示 代码 错误?这种情况通常都是导航模块损坏所造成的建议到4s店,让维修人员去帮你具体检查一下,需要重新更换新的导航才可以解决,如果车辆在质保期之内是可以到4s店免费更...
大淘客怎么上架自己商品,自定义 导航 加 代码 是怎么加的? - 梓...这个需要有代码才可以,不是简单的添加好像都不可以的,你要可以的你自己做网站这个没什么的,只要是真正懂得网站程序编程的都会.我也研究了一段时...
导航 栏横向排列的CSS 代码 怎么写? - NE95ZiYMic 的回答 - 懂得如果你用a标签做,a标签有背景,就要设置属性和属性;还要定义宽度高度,最后别忘记用clear层清除浮动,基本的css为下面.a{::XXpx;}.clear{},用ul,li标...
我的 导航 很窄,这种宽的 代码 是?[最佳回答]这个是你的原始设置问题了,解决方法是装扮空间---风格----宽版OK!