3

レガシーコードを調べていると、次の列挙型に出くわしました。

    public enum cmdResults 
    {
        cmdNotFound = 0,    
        cmdFound    = 1,    
        cmdExit     = 2,    
        cmdSuccess  = 3,    
        cmdFail     = 4,    
        cmdTimeout  = 5,    
        cmdProcess  = 6,
        cmdAddTime  = 7,
    };

最後の enum メンバーに続くコンマに注目して、私は唖然としました。私はそれを削除しましたが、予想どおり、まだコンパイルされています。しかし、なぜその最後のコンマで機能するのでしょうか?

(そして、それは私にとって奇妙なメンバーの順序付けについては言及していません。インデックス 0 に新しい「cmdNothing」を配置するか、少なくとも「cmdFail」をその場所に配置します)

4

2 に答える 2

11

C# コンパイラの作成者は、末尾のオプションのカンマを有効な構文にすることを選択するためです。

これは、最後の行を特別なケースにする必要がないことを意味するため、非常に気に入っています。行をコピーして貼り付けたり、どこにあるかを考えずに任意の位置 (末尾を含む) に新しい行を追加したり、コンマを修正する必要なく行を削除したりできます。余分なコンマを許可することによって生じるあいまいさやその他の問題はありません。

于 2013-03-19T20:55:32.987 に答える
3

合法的な構文であるため、コンパイルされます。

于 2013-03-19T20:55:29.840 に答える