C# 交互式窗口将"提交 #30+E"显示为枚举的类型



如果我尝试在控制台中使用 Visual Studio 中的 C# 交互式窗口输出枚举的类型,该语句Submission#30+E是什么意思:

> enum E { First, Second};
> Console.WriteLine(typeof(E));
Submission#30+E

这是 C# 交互式窗口的特征。由于交互式窗口的工作方式,为实际编译的语言提供 REPL,交互式窗口将分别编译您发送给它的每一行。因此,在内部,这些"提交"中的每一个都是单独处理和编译的。

然后从 0 开始对提交进行索引。所以第一次提交被编译成Submission#0,第二次被编译成Submission#1,依此类推。在您的情况下,Submission#30意味着它是您在 Visual Studio 会话期间发送到 C# 交互窗口的第 31 个输入。

内部实际发生的是,您提交的代码被编译成自己的类型。因此,每个提交都会产生自己的类型,用于评估交互式输入。你猜对了,Submission#n就是那种类型。

您看到的其余部分是+E.查看类型名称时,名称中的加号表示它是嵌套类型。请考虑以下示例:

public class Foo
{
public class Bar
{ }
}

在这里,Bar嵌套在Foo中。如果您查看typeof(Foo.Bar).ToString()(在交互式提示中评估typeof(Foo.Bar)时调用(,则会返回Foo+Bar。所以你Bar嵌套在Foo内。

因此,回到您的情况,您拥有了解正在发生的事情所需的所有部分:Submission#30+E意味着它是交互式窗口的第 31 次提交,并且在自动创建的类型Submission#30内部E嵌套类型。

如果你考虑一下,这是完全有意义的:由于你提交到提示的所有内容都被编译成它自己的类型,所以类型定义必须嵌套在该自动创建的类型中。这正是E发生的事情.

相关内容

  • 没有找到相关文章

最新更新