C#.NET 中的 GOTO 语句

2023-12-21

try
{...
block:
....
}
catch{ ..}
GOTO block
...
....
finally{...}

在这种情况下 goto 会执行吗?


它不会编译,因为 'GOTO block' 代替 'goto block;' 即使它是正确的,它也不会编译,因为 C# 规范指出(第 8.9.3 节):

的目标是goto 标识符语句是带有给定标签的带标签语句。如果当前函数成员中不存在具有给定名称的标签,或者 goto 语句不在该标签的范围内,则会发生编译时错误。该规则允许使用 goto 语句将控制转移出嵌套范围,但不允许into嵌套范围。

我还发现几个规格对我来说也很有趣:

goto 语句不能退出finally块(第 8.10 节)。当 goto 语句出现在finally块中,goto语句的目标必须在同一个块内finally块,否则会发生编译时错误。

And:

goto 语句执行如下:

  • 如果 goto 语句退出一个或多个带有关联的 finally 块的 try 块,则 > 控制首先会转移到最内层 try 语句的 finally 块。当 >and if 控制到达 finally 块的结束点时,控制权将转移到下一个封闭的 try 语句的 >finally 块。重复此过程,直到所有介入的 try 语句的 >finally 块都已执行。
  • 控制权转移到 goto 语句的目标。

后者意味着如果你有

try
{
    ...
    goto Label1;
}
finally
{
    CloseAll();
}

Label1:
   MethodB();

它会打电话CloseAll()在实际将控制权转移给Label1并执行MethodB().

很有道理,但我从来没有想过......

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

C#.NET 中的 GOTO 语句 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在

随机推荐

  • 何时使用基于 ES6 类的 React 组件与函数式 ES6 React 组件?

    在花了一些时间学习 React 之后 我了解了创建组件的两种主要范例之间的区别 我的问题是我什么时候应该使用哪一个以及为什么 一种相对于另一种的优点 权衡是什么 ES6 类 import React Component from react
  • 在Kafka集群中添加新的ZooKeeper节点?

    我正在运行一个包含五个节点的 Apache Kafka 集群 并且正在使用一个包含三个节点的 Apache ZooKeeper 集群 在zookeeper properties文件中 server 1 zNode01 2888 3888 s
  • 在实体框架中保存断开连接的对象4

    在 EF1 中 我不能只更新在 ObjectContext 范围之外构造的对象 使用正确的 id EF4有新方法吗 我可以将其添加到上下文中吗 context AddOrder order 其中 context 是我的 ObjectCont
  • 单击时显示微调器

    我构建了一个微调器并使用 CSS 对其进行了动画处理 现在我尝试隐藏微调器并在单击按钮时显示它 到目前为止 我已经编写了这段代码 当我单击提交时它没有显示
  • 应如何使用基于类的视图动态设置模板名称?

    我已经搜索了基于类的视图 Django 文档 Django 1 4 的参考和主题 但我没有找到任何提及这一点的内容 如何使用基于类的视图动态设置模板名称 我正在寻找以下设置的基于类的等效项 urls py from django conf
  • 滚动选项卡时工具栏淡入淡出(代号一)

    Codename One 手册中的 如何在滚动时淡出工具栏 部分描述了如何在滚动时淡出工具栏标题动画 https www codenameone com manual components html title animations sec
  • Django REST 框架:动态序列化器关系字段 - POST pk 但 GET 超链接

    在我的模型中 我有 州 和 国家 一个国家可以有多个州 PK 1 的 HTTP GET 状态 id 1 url http test com states 1 name Ohio country http test com countries
  • 不含状态栏、操作栏和选项卡的屏幕高度

    我有一个 ListView 我希望每一行填充可用屏幕的三分之一 我有可见的状态栏 然后有一个带有滑动选项卡的操作栏 我正在做这样的当前计算 height context getResources getDisplayMetrics heig
  • Bash 真实的数字顺序

    如何按真实的数字顺序对目录中的文件进行排序 file1 txt file2 txt file11 txt 我认为它的名字是 自然秩序 Use the v option ls v file file1 file2 file11 file12
  • 在 R 中从列表转换为 data.frame 时,utf-8 字符会丢失

    我在 Windows 7 64 位上使用 R 3 2 0 和 RStudio 0 98 1103 我的电脑的Windows 区域和语言设置 是英语 美国 由于某种原因 以下代码将文本 Kory any nad p ehradou 中的捷克语
  • 使用 Selenium Webdriver 测试 sessionStorage

    我正在编写基于 Java 的 selenium webdriver 测试 我正在测试的应用程序在 storageSession 中设置了某些值 例如sessionStorage setItem demo test 如何检查并断言存储变量的值
  • 引用 x64 dll 文件在 C# 中有效,但在 F# 中无效

    我使用最新的 VS 2010 创建了两个全新的解决方案 C 控制台应用程序 F 控制台应用程序 我引用了两个x64 dll文件 Kitware VTK dll and Kitware mummy Runtime dll 可以在这里下载 ht
  • 如何使用 OR 和汇总函数构建高级 Hibernate 查询

    我有一个在 SQL 中运行的相当复杂的查询 但为了可移植性 我想用 HQL 来表达它 我将获取用户配置的首选项值 如果存在 如果不存在 我必须使用默认值 必须从当前日期中减去该值 并将其与我感兴趣的表中的列进行匹配 select d id
  • 使用 gdb 加载 ctypes 的调试库

    我在 python 中加载了一个 C 库 X so 并使用这些标志进行了编译 GDBFLAGS gdwarf 2 g3 O0 ggdb 我使用 ctypes 从 python 调用它的一些非静态函数 我希望调试 C 库 X so X so
  • 如何在不提交的情况下触发 ASP.NET 客户端验证?

    我有一个 ASP NET 网站 WebForms NOTMVC 其中有一个分为几张幻灯片的调查表 每张幻灯片都有一个下一个按钮 显然可以转换 客户端 而不是回发或远程请求 到下一张幻灯片 在每张幻灯片中 我都有几个 ASP NET 控件及其
  • 当 HTML5 音频是静态文件时,iOS 中的 HTML5 音频会显示“直播”

    对于 Windows Chrome 可能还有许多其他浏览器 此代码适用于在audio元素 param string filename return Illuminate Http Response Illuminate Contracts
  • AFNetworking 库在 iOS 7 中失败

    使用新的 iOS 7 Beta 并下载最新版本的 AFNetworking 我转到 文件 gt 将文件添加到项目 并传入目录 AFNetworking framework 现在我遇到了大量链接器错误 为了进行完整性检查 我将提交历史记录回滚
  • Python Selenium Webdriver:查找#document 元素

    我一直在使用 Python 的 Selenium Webdriver 通过此 HTML 代码获取元素 但是 我无法访问此 document 标记内的任何元素 我都用过driver find element by xpath html bod
  • Java:如何添加SSL客户端身份验证

    我有以下代码使用 SSL 连接服务器与客户端 现在我想添加客户端身份验证 我有一个服务器密钥库 JCEKS 类型 和一个客户端密钥库 JKS 类型 服务器使用信任库 cacerts 我在其中导入了两个证书 因为我也想使用此信任库进行客户端身
  • C#.NET 中的 GOTO 语句

    try block catch GOTO block finally 在这种情况下 goto 会执行吗 它不会编译 因为 GOTO block 代替 goto block 即使它是正确的 它也不会编译 因为 C 规范指出 第 8 9 3 节