gpt4 book ai didi

c# - 一般 C# 问题

转载 作者:太空狗 更新时间:2023-10-29 21:19:17 25 4
gpt4 key购买 nike

下面的类有两个方法,其中 M1 提示“并非所有代码路径都返回一个值”,而 M2 没有。

问题:编译器如何在返回值上下文中解析 M2? NotImplementedException 实例如何隐式转换为 int(如果有任何内部编译时间解析)

class A
{
int M1()
{
}
int M2()
{
throw new NotImplementedException();
}
}

最佳答案

一个方法并不总是需要返回一个值;特别是,它也可以通过抛出异常(在这种情况下不返回任何值)来退出。

编辑:具体来说,the rules for the body of a method返回 int 的是:

  1. 方法中的所有return 语句必须返回一个可转换为int 的表达式
  2. 方法 block 的末尾不能到达

在您的示例中,编译器可以证明 M2 总是通过抛出退出,因此无法到达方法 block 的末尾(满足规则 #2)。也没有 return 语句,这也满足规则 #1。因此,这是一个有效的方法定义。

另一方面,M1 不满足规则 #2,因此它是不合法的。

您可能被错误消息误导了,它根本没有提到抛出,但考虑到在几乎所有情况下,具有返回值的方法都会执行 return 而不是抛出——编译器只是告诉您想要你可能忘了做。

关于c# - 一般 C# 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com