首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的C# Noop语句

简单的C# Noop语句
EN

Stack Overflow用户
提问于 2011-08-03 18:07:20
回答 17查看 27.5K关注 0票数 55

在C#中不需要实现方法的简单Noop语句是什么?(不过,内联/Lambda方法是可以的。)

我目前的用例:我想占用try-catch的catch-block块,这样我就可以在调试和检查异常时进入它。

我知道我可能无论如何都应该处理/记录异常,但这不是本练习的重点。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-08-03 18:11:58

如果你真的想要noop,那么它定义了一个不做任何事情的无名操作,然后调用它,不会导致任何事情发生:

代码语言:javascript
复制
((Action)(() => { }))();
票数 75
EN

Stack Overflow用户

发布于 2013-12-28 04:36:14

c#中的标准空语句/noop操作是

代码语言:javascript
复制
;

如下所示:

代码语言:javascript
复制
if (true)
    ;

(relevant documentation)

这专门针对您的用例(只需在;行上放置一个断点,或以其他方式跳转到它),是最小的,并且直接由环境支持(因此,即使您正在做复杂的事情,如查看编译的源代码,您也不会有任何额外的噪音/等。以担心来自编译器/优化器/等等的问题...)--还有一个额外的好处,那就是在完成调试/推送到生产环境中时,可以发出警告,提醒您将其从代码中清除出来

票数 71
EN

Stack Overflow用户

发布于 2011-08-03 18:12:26

如果你想进入这个方法,你可以硬编码一个断点:

代码语言:javascript
复制
System.Diagnostics.Debugger.Break();

或者,如果你没有在发布模式下编译,下面的代码行将发出IL,你可以在上面中断它:

代码语言:javascript
复制
var a = 1;

您还可以编写特定于您的计算机的Debug.Break():

代码语言:javascript
复制
[Conditional("DEBUG")]
[Obsolete("Please remove me before checkin.")]
public static void Break()
{
    #IF DEBUG
    if (Dns.GetHostName() == "PROTECTORONE")
        Debugger.Break();
    #ENDIF
}

请注意,由于有了[Conditional("DEBUG")],该方法在发布构建期间不会在调用站点中被调用。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6924782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档