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