gpt4 book ai didi

c# - 作为具有任何返回类型的函数主体有效的语句

转载 作者:太空狗 更新时间:2023-10-29 23:07:12 25 4
gpt4 key购买 nike

question (或者更具体地说,这个 answer )让我想知道:在 C# 中,哪些语句作为具有任何返回类型的函数的主体是有效的?

例如:

public void Foo()
{
while (true) { }
}

public int Foo()
{
while (true) { }
}

这两个函数都是有效的 C# 函数,尽管第二个函数并不真正返回 int

所以我知道无限循环(例如 for(;;))和 throw new Exception() 之类的 throw 语句作为任何函数的主体都是有效的,但是是否有关于该属性的更多声明?


更新:

我想到了另一个解决方案,无限递归:

    public string Foo()
{
return Foo();
}

最佳答案

有趣的是,一个与您的第二个片段并没有什么不同的例子是:

public static int Foo()
{
do {}
while (true);
}

但我不认为这真的算作“不同”。

另外,还有一个例子说明为什么 goto 是邪恶的:

public static int Foo()
{
start:
goto start;
}

值得注意的是,这确实会产生编译错误:

public static int Foo()
{
bool b = true;
while (b)
{
}
}

即使 b 没有改变。但是如果你明确地让它保持常量:

public static int Foo()
{
const bool b = true;
while (b)
{
}
}

它再次工作。

关于c# - 作为具有任何返回类型的函数主体有效的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25914247/

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