C# C语言中的代码好奇心#

C# C语言中的代码好奇心#,c#,label,goto,C#,Label,Goto,我在看的时候,在ECMA.NET项目中偶然发现了这段代码(如果您感兴趣,可以使用延续文件) 我不知道L0:和EL0:在这里做什么,以前从未见过。这个词对谷歌来说似乎也太初级了 有人知道这件事吗?它们看起来像是用来作为goto目标的标签。有关更多信息,请参阅。它们看起来像是用作转到目标的标签。有关更多信息,请参阅。它们看起来像标签。本例中不使用标签(因为它是生成的代码?),但可以用于跳转到另一个位置。您可以使用goto L0以跳转第一个标签。例如,以下代码只写“Hello,World”,因为它跳过

我在看的时候,在ECMA.NET项目中偶然发现了这段代码(如果您感兴趣,可以使用延续文件)

我不知道L0:和EL0:在这里做什么,以前从未见过。这个词对谷歌来说似乎也太初级了


有人知道这件事吗?

它们看起来像是用来作为goto目标的标签。有关更多信息,请参阅。

它们看起来像是用作转到目标的标签。有关更多信息,请参阅。

它们看起来像标签。本例中不使用标签(因为它是生成的代码?),但可以用于跳转到另一个位置。您可以使用
goto L0
以跳转第一个标签。例如,以下代码只写“Hello,World”,因为它跳过了中间的
Write()


在我看来,它们就像标签。本例中不使用标签(因为它是生成的代码?),但可以用于跳转到另一个位置。您可以使用
goto L0
以跳转第一个标签。例如,以下代码只写“Hello,World”,因为它跳过了中间的
Write()


这些是标签,就像GOTO一样。

这些是标签,就像GOTO一样。

L0和EL0看起来像是

的标签,L0和EL0看起来像是

的标签,它们显然是标签,但我不认为它们被用作GOTO目标。我想象它们被设计成被某种代码生成工具识别。代码生成工具“拥有”L0和EL0之间的代码,这可能只是意味着“结束L0”。

它们显然是标签,但我不认为它们被用作goto目标。我想象它们被设计成被某种代码生成工具识别。代码生成工具“拥有”L0和EL0之间的代码,这可能只是意味着“结束L0”。

@Ty,@C。罗斯:是的,C#有goto's。事实上,循环实际上只不过是一个goto的语法糖。@Ty,@C.Ross:是的,C#有goto。事实上,循环实际上只不过是goto周围的语法糖。
protected internal override int FindPrototypeId (string s)
    {
        int id;
        #region Generated PrototypeId Switch
    L0: {
            id = 0;
            string X = null;
            if (s.Length == 11) { X = "constructor"; id = Id_constructor; }
            if (X != null && X != s && !X.Equals (s))
                id = 0;
        }
    EL0:
        #endregion
        return id;
    }
Console.Write("Hello, ");
goto Last;
Console.Write("Cruel ");
Last:
Console.WriteLine("World");