栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

非空方法中缺少的return语句会编译

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

非空方法中缺少的return语句会编译

为什么一种语言允许我们使用具有无限循环且不返回任何内容的非空方法?

非无效方法的规则是 ,返回的每个代码路径都必须返回一个值
,并且该规则在您的程序中得到满足:返回的零个代码路径中的零个确实返回一个值。规则不是“每个非无效方法都必须具有返回的代码路径”。

这使您可以编写如下的存根方法:

IEnumerator IEnumerable.GetEnumerator() {     throw new NotImplementedException(); }

那是一种非无效的方法。为了满足接口,它 必须 是非无效方法。但是使该实现非法是愚蠢的,因为它不返回任何东西。

由于

goto
(记住,a
while(true)
只是一种更舒适的编写方式
goto
)而不是
throw
(是的另一种形式
goto
),因此您的方法具有无法到达的终点是无关紧要的。

为什么编译器甚至不警告返回某些内容?

因为编译器没有很好的证据证明代码是错误的。有人写信

while(true)
,看来这样做的人很可能知道他们在做什么。

在哪里可以阅读有关C#中的可达性分析的更多信息?

在这里查看我关于该主题的文章:

ATBG:事实上和法律上的可及性

您也可以考虑阅读C#规范。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/576078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号