2009-04-07 17 views
1

私はYUI Compressorを見ていて、ECMA.NETプロジェクトのこのコードを読んでいました(興味があれば続きのファイル)。コード好奇心

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:こちらをやっていると前にこれを見たことがありません。この言葉はGoogleにとってもあまりにも初歩的なようだ。

誰もが知っていることは何ですか?

答えて

9

gotoターゲットとして使用するためにlablesのように見えます。詳細については、http://msdn.microsoft.com/en-us/library/13940fs2.aspxを参照してください。

+0

私はそれを恐れていました。 –

+0

C#にはgotoがありますか? ... –

+0

@Ty、@C。ロス:はい、C#にはgotoがあります。実際には、ループは実際にはgotoのまわりの文法砂糖以上のものではありません。 –

5

彼らは私のラベルのように見えます。この例ではラベルは使用されていません(生成されたコードなので)。ただし、別の場所にジャンプするために使用できます。 goto L0;を使用して、最初のラベルをジャンプすることができます。それは中央のWrite()スキップので例として、次のコードは「こんにちは、世界」だけ書き込み:

Console.Write("Hello, "); 
goto Last; 
Console.Write("Cruel "); 
Last: 
Console.WriteLine("World"); 
2

者はGOTOのように、ラベルです。

1

のラベルのように見えるが、私は、彼らが後藤のターゲットとして使用しているとは思いません。私は彼らがある種のコード生成ツールによって認識されるように設計されていると思います。コード生成ツールは、L0とEL0の間のコードを「所有」しています。これはたぶん "end L0"を意味します。

関連する問題