- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
灵感来自这个问题的答案
Is empty case of switch in C# combined with the next non-empty one?
此术语唯一出现在 C# 语言规范的 §6.5 中
- If
D
has a non-void return type and the body ofF
is a statement block, when each parameter ofF
is given the type of the corresponding parameter inD
, the body ofF
is a valid statement block (wrt §8.2) with a non-reachable end point in which each return statement specifies an expression that is implicitly convertible to the return type ofD
.
后面的规范我们可以看到
8.1 End points and reachability
Every statement has an end point. In intuitive terms, the end point of a statement is the location that immediately follows the statement. The execution rules for composite statements (statements that contain embedded statements) specify the action that is taken when control reaches the end point of an embedded statement. For example, when control reaches the end point of a statement in a block, control is transferred to the next statement in the block.
...
我们可能对此有所了解。然而,我在谷歌上搜索了一下,发现没有对无法访问的端点 的直接解释。因为 Stack Overflow 是一个问答网站,我想如果有一个更简单直观的解释,可以很容易地搜索和理解这个术语,对程序员尤其是非英语母语的程序员会有帮助。
最佳答案
Ben 的回答很好地说明了这一点。更准确地说,终点是:
语句不可访问。这些语句中的每一个都在“结束之前”将控制权转移到其他地方,因此永远不会命中语句的“终点”。将其与以下语句进行比较:
依此类推,将控制转移到下一个语句。
循环提出了一个有趣的挑战:
while(x) { M(); }
本质上是一样的:
BEGIN:
if (!x) goto END;
{ M(); }
goto BEGIN;
END: ;
所以端点是可达的。但是
while(true) { M(); }
可以优化为:
BEGIN:
{ M(); }
goto BEGIN;
由于现在没有办法“走到尽头”,所以这个语句被认为有一个无法到达的终点。要么永远循环,要么 M() 永远不会返回,或者 M() 抛出;无论哪种方式,都不会到达语句的终点。
确定可达性的确切规则比这个草图稍微复杂一点,但您可以大致了解一下。 (我想给人们一个挑战,看看他们是否掌握了可达性:编写一个程序,其中有一个可达的 goto 语句,但相应的标记语句是不可到达的。棘手!)
这些规则用在很多地方。立即想到的三个:首先,开关部分不能有可到达的端点。其次,非 void 的方法(或 lambda 或 property getter 等)不得有可到达的终点。第三,如果一个方法有一个可达的终点并且它有一个out参数,那么这个参数必须在终点明确赋值。
关于c# - 什么是语句的不可到达端点(unreachable endpoint)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168072/
在 spring boot 2 应用程序中,我正在尝试访问执行器端点/beans,就像我之前在 Spring boot 1.5.* 应用程序中所做的那样。但我做不到。此外,我没有在 log.INFO
我正在为资源 items 编写端点,它是 applications 的子资源,如下所示:applications/{:id}/items。项目和应用程序都具有除名称之外的其他属性。 我创造了 GET
我正在创建一个 API,其中基于经过身份验证的用户可以更改对象的不同属性的权限。 解决这个问题的常用方法是什么? 我应该有这样的端点吗 /admin/users 和 /users 具有不同的 API
也许(希望如此)我错过了一些非常简单的东西,但我似乎无法弄清楚。 我有一组我想放在 nghttpx 代理后面的 gRPC 服务。为此,我需要能够使用非根 url 上的 channel 配置我的客户端。
我没有找到法定存款的历史记录(来自银行卡), 这里只有加密存款:https://prnt.sc/ttdwc2= ) 例如,在我的银行帐户界面中,我在 5 月 12 日找到了存款,但在这里找不到...
我很好奇普罗米修斯的工作原理。使用 Prometheus 界面,我可以看到一个下拉列表,我认为其中包含所有可用的指标。但是,我无法访问列出所有抓取的指标的指标端点。 http://targethost
是否可以从 apollo-server-express 上的 GraphQL 端点触发浏览器中的文件下载?应用? 我有一个用标准 express 写的端点 app.get函数(见下文),但我想利用 G
有谁知道在一个请求中获取您上传到媒体库的所有图像的端点吗?我将 next js 与 Strapi 一起使用,需要一种方法来从媒体库中获取所有图像,但似乎没有任何相关文档 最佳答案 /api/上传 GE
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我编写了一个简单的 HTTP 监听器并将其部署在 Heroku 应用程序中。我确保在 $PORT 中绑定(bind)端口。 现在,我尝试使用 url name-of-my-app.herokuapp.
我正在尝试构建一个安全系统,用于将数据从客户端 Android 应用程序传输到运行 PHP 的网络服务器。 我想做的是确保系统是加密安全的,这样来自应用程序的消息可以被验证为实际上来自应用程序本身,而
我是 Go 编程语言的新手。尝试使用 gousb访问爱普生收据打印机。 因此,我从存储库中获取了一些示例代码,并对其进行了一些调整,以验证我是否可以访问打印机。 我可以看到打印机并枚举端点。我收到此输
我正在使用 azure API 端点。 ....azure-api.net/...。当我尝试使用 Charles 代理查看 HTTP 请求/响应时,HTTP 响应为空。当我关闭代理时,该请求有效。 我
我正在关注这个tutorial了解用户成功登录后如何获取 token 。 到目前为止我已完成的步骤: 我已使用此 URL 注册了自己(用户名和密码):https://MyCompany.b2clogi
给定一个以 .svc 结尾且应该运行 SOAP 网络服务的 URL,我如何从中获取一些数据? 我试过: 通过网络浏览器访问它 通过 Python 的库 Zeep 访问它 通过 Microsoft 实用
我认为公共(public) REST API(例如注册端点)无法验证用户身份是否正确?例如,我们的端点应该只接受来 self 们的移动应用程序和 future 网络应用程序的请求。 我很确定这在逻辑上
在自托管服务中,我想使用 App.config 中指定的端点(如果存在),或者如果 App.config 为空则使用代码中指定的默认端点。我该怎么做? 编辑:澄清一下,这是在服务器(服务)端使用 Se
我需要在我的后端服务器中实现实时开发者通知,以了解我的用户所做的任何购买修改(暂停帐户、续订订阅等)。我的后端服务器是用 Delphi 制作的,没有现成的 Delphi 库,但是,我可以制作一个 HT
我创建了一个 Kubernetes 服务: [root@Infra-1 kubernetes]# kubectl describe service gitlab Name: git
我正在开发一个应用程序,我需要将对象列表传递给 REST 端点,该端点将进行一些计算并将结果返回给调用者。 问题更多是关于如何处理这种情况的哲学问题? 在 GET 请求中传递大量有效负载是一个坏主意。
我是一名优秀的程序员,十分优秀!