我正在查看YUI Compressor并在ECMA.NET项目中遇到了这段代码(如果您感兴趣,可以使用Continuation文件)。
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;
}
我不知道L0:和EL0:在这里做什么,以前从未见过这个。这个词对谷歌来说似乎也太基础了。
有人对此有所了解吗?
答案 0 :(得分:9)
它们看起来像用作goto目标的标签。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/13940fs2.aspx。
答案 1 :(得分:5)
它们看起来像我的标签。在这个例子中没有使用标签(因为它是生成的代码?),但可以用来跳转到另一个地方。您可以使用goto L0;
跳转第一个标签。例如,以下代码只写“Hello,World”,因为它会跳过中间Write()
:
Console.Write("Hello, ");
goto Last;
Console.Write("Cruel ");
Last:
Console.WriteLine("World");
答案 2 :(得分:2)
这些是标签,如GOTO。
答案 3 :(得分:1)
它们显然是标签,但我不认为它们被用作goto目标。我想它们的目的是被某种代码生成工具识别。代码生成工具“拥有”L0和EL0之间的代码,这可能仅仅意味着“结束L0”。
答案 4 :(得分:0)
L0和EL0看起来像goto statement
的标签