C# 可能错误的空语句

2023-12-09

在 C# 中,我可以这样写:

using (new MyDisposableClass().MethodA());

分号会导致显示编译器警告,其中指出可能存在错误的空语句。我没有运行上面的代码,但是该方法不会仍然被调用吗?

这种类型的编码约定有什么用途?我在这里看到了关于此的另一个帖子,但我问是否现在有任何差异/因此有不同的回复。

Thanks


这段代码基本上翻译为

MyDisposableClass tmp = new MyDisposableClass().MethodA();
try
{
}
finally
{
    if( tmp != null )
        tmp.Dispose();
}

基本上你正在处理调用的结果MethodA,而不是丢弃MyDisposableClass这就是可能的意图。

The ;遵循 using 语句是合法的,但警告表明您可能错误地将其添加到那里。例如,以下代码将无法编译:

using( var tmp = new MyDisposableClass() );
{
    tmp.MethodA();
}

解析器评估两个完全独立的块,编译器会看到它,就好像您输入了以下内容:

using( var tmp = new MyDispoableClass() )
{

}


{
    tmp.MethodA();
}

很容易错过悬挂的;通过肉眼观察,编译器警告只是表明您可能打算做其他事情。有时需要更简短的陈述,我认为表明这是有意的最好方法是使用{}代替;.

using( new MyDisposableClass().MethodA() ){}

仍请注意,这是处理对 Method 的调用结果 - 而不是 Disposable Class 实例。你的代码实际上应该写成

using( var tmp = new MyDisposableClass() ){ tmp.MethodA(); }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 可能错误的空语句 的相关文章

随机推荐

  • 如何在net core web api中接受dd-MM-yyyy格式的日期?

    我在我的 Web API 项目中使用 net core 3 1 我创建了一个 API 它接受用户的日期 默认情况下月 日 年格式在项目中被接受 但我想接受日期日 月 年相应地格式化并验证所有日期 下面是我的API HttpGet publi
  • 标签替换非 html 链接

    我有一段代码 它将采用如下所示的文本块 示例文本 示例文本http www google com示例文本 使用preg replace callback方法和以下正则表达式 preg replace callback http w crea
  • 对 asp 中的参数化 SQL 语句进行故障排除

    我正在尝试保护一些用我猜是 VB 或 asp 编写的遗留代码 不太确定是否有区别 当我尝试执行该语句时 页面出现内部服务器错误 我确信这是连接的结果 但我不太了解该语言 不知道如何解决它 我对该语言和 ADODB 库的了解来自 W3Scho
  • 如何检查 awk 数组是否为空

    我是 AWK 的新手 试图确定我的数组是否为空 以便如果是的话我可以打印一条消息 通常我习惯于长度函数并且可以这样检查 但 AWK 似乎没有这些 这是我的工作代码 如果解析所有数据后数组中没有任何内容 我只想打印出不同的消息 add to
  • r stat_contour 多边形填充不正确

    当我使用stat contour对于多边形 某些区域不应该被填充 因为那里没有数据 我在图中标记了它们 有谁知道如何避免这种情况 另外 坐标轴和绘图区域之间有空间 如何去掉 这是绘图代码 plot contour lt function d
  • JavaScript 错误:未捕获类型错误:foo 不是函数

    由于某种原因 JavaScript 似乎无法识别我的函数 我在一些 HTML 中有一个按钮
  • 扩展 Material UI 主题中的排版

    是否可以在 Material UI 主题中定义额外的字体 字体系列 我想要得到这样的东西 export const theme createMuiTheme typography fontFamily Open Sans sans seri
  • iPhone SDK,如何获取周五20:00的NSDate对象?

    有谁知道如何获取下周五 20 00 的 NSDate 吗 Yes 本文教你如何获取当前周的星期日 我很快将其调整为周五 20 00 假设采用公历 NSDate today NSDate alloc init NSCalendar grego
  • 在使用 CefSharp 加载远程 JavaScript 时修改它们?

    我正在构建一个自定义浏览器作为远程网站界面的一部分 他们的 GUI 很糟糕 所以我做了一些 JavaScript 修改来让它看起来更好 目前 为了修改其 UI 我使用以下 GreaseMonkey 脚本 在 Firefox 上 UserSc
  • Python 中的吉他弦代码? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我对 Python 很陌生 但对编写可以模拟吉他弦的代码非常感兴趣 我该怎么做呢 或者至少我该如何开始这样做 任何帮助表示赞赏 谢谢你 EDIT 我想看看演奏不同的琴弦 音符等时
  • 使用 D3 的 Geojson 地图仅渲染要素集合中的单个路径

    我正在尝试绘制哥伦比亚某些地区的 geojson 地图 目前它只显示一条路径 我的特征集有 52 个特征 但我只能绘制这一个特征 我不知道我做错了什么 我的代码基于其他教程 我怎样才能显示所有路径 var features mapData
  • 查找字符串中的多个 url。

    resource THIS IS ABOUT WWW JONAKCOMPUTERS COM HTTP HIGHLOW COM AND TESTINGSERVER1 COM 我想将三个网址提取到另一个类似于以下内容的字符串中 all urls
  • 使用 HTML5 Canvas - 围绕任意点旋转图像

    将表盘旋转到半圆形 北半球 图像作为背景 范围可以是 0 180 度 在输入到进行画布转换的方法时 转盘将旋转并停在匹配的值上 这是我根据传递的帮助和示例尝试的phrogz 一般来说 您想要做的是 将上下文转换为画布上对象应围绕其旋转的点
  • 客户端未处理 .NET Remoting 异常

    我检查了其余的远程处理问题 这个具体案例似乎没有得到解决 我设置了 NET Remoting 服务器 客户端 在服务器端 我有一个带有可以引发异常的方法的对象 以及一个将尝试调用该方法的客户端 Server public bool MyEq
  • PHPMailer SMTP 连接失败

    我正在尝试通过 Mandrill 发送电子邮件PHP邮件程序但没有成功 在本地主机上测试 有人能告诉我问题出在哪里吗 这是来自 PHPMailer 的详细信息 2014 04 27 17 51 06 SERVER gt CLIENT 220
  • 访问pom中定义的maven属性

    如何访问普通 Maven 项目和 Maven 插件项目中 pom 中定义的 Maven 属性 Use the 属性 maven 插件编写具体的pomproperties在编译时写入文件 然后在运行时读取该文件 In your pom xml
  • ASP.NET CORE 中的流代理直播流

    我的网络摄像头有一个流 url 它返回 multipart x mixed replace boundary myboundary 的内容类型 假设可以通过以下方式访问它 http mywebcam livrestream cgi 我想在
  • 装饰一个方法

    在我的 Python 应用程序中 我使用事件在不同插件之间进行通信 现在 我想我可以使用装饰器来为我做这件事 而不是手动注册事件的方法 我想让它看起来像这样 events listento event name def myClassMet
  • 使用 chrome.socket API 构建 Web 服务器

    我使用 Chrome 打包应用程序构建了一个网络服务器 我反复看到的问题是 chrome socket accept 和 chrome socket write 不调用它们的回调函数 如果请求率低于每秒 1 个请求 它通常或多或少会可靠地工
  • C# 可能错误的空语句

    在 C 中 我可以这样写 using new MyDisposableClass MethodA 分号会导致显示编译器警告 其中指出可能存在错误的空语句 我没有运行上面的代码 但是该方法不会仍然被调用吗 这种类型的编码约定有什么用途 我在这