在 c# 中声明我的第二个方法时,出现错误“静态局部函数在 c# 7.3 中不可用”

Chi*_*ano 2 c#

当我声明我的第一个方法时

static void Generation()
{
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当我尝试使用相同的代码声明我的第二种方法时

static void Rendering()
{
}
Run Code Online (Sandbox Code Playgroud)

它收到错误“静态本地函数在 c# 7.3 中不可用”。我读到我可以通过写作来解决

<LangVersion>8.0</LangVersion>
Run Code Online (Sandbox Code Playgroud)

但我想知道为什么它第一次有效而不是第二次。

Pac*_*ac0 5

检查你的语法,特别是大括号的顺序{}等......

编译器似乎认为第二个函数以某种方式位于第一个函数内。

错误(在 C# < 7.3 中)

static void Generation()
{
static void Rendering()
{
}
}
Run Code Online (Sandbox Code Playgroud)

正确的:

static void Generation()
{
}
static void Rendering()
{
}
Run Code Online (Sandbox Code Playgroud)

请注意,第一个函数体内的许多语法错误可能会使编译器感到困惑,并使其认为第一个函数尚未在第二个函数之前结束。例如,我建议仔细检查所有的()or{}[],并终止;

当使用 C# 8(或 7.3)时,它不再是一个错误,因为您实际上可以static在其他函数中定义函数,但据我了解您的问题,这不是您想要做的。