私が作成した列挙型は次のようになります。
enum MonthOfTheYear : byte
{
January,
February,
March,
April,
May,
June,
July = 0,
August,
September,
October,
November,
December
}
ご覧のとおり、July には 0 の初期化子があります。これには、いくつかの興味深い (副作用) 効果があります。整数値の「ペアリング」があるようです。2 月と 8 月の値は 1 になり、3 月と 9 月の値は 2 になります。
MonthOfTheYear theMonth = MonthOfTheYear.February;
Console.WriteLine(theMonth + " has integer value of " + (int)theMonth);
と
MonthOfTheYear theMonth = MonthOfTheYear.August;
Console.WriteLine(theMonth + " has integer value of " + (int)theMonth);
これを明確に示します。これまでのところ、私がそれを見つけるのは奇妙ですが、私は喜んで一緒に行きます. 編集: July 0 を割り当てると、インデックスが最初からやり直されます。同じ列挙型内で共存できる理由がわかりません。
しかし!次に、列挙型をループして、基になるすべての整数値を出力すると、奇妙なことが起こります。
MonthOfTheYear theMonth = MonthOfTheYear.January;
for (int i = 0; i < 12; i++)
{
Console.WriteLine(theMonth + " has integer value of " + (int)theMonth++);
}
出力
July has integer value of 0
February has integer value of 1
September has integer value of 2
April has integer value of 3
May has integer value of 4
June has integer value of 5
6 has integer value of 6
7 has integer value of 7
8 has integer value of 8
9 has integer value of 9
10 has integer value of 10
11 has integer value of 11
整数値が連続しているため、舞台裏で何が起こっているのか誰かが説明してくれることを期待していたので、これは期待どおりに出力されていると思いますが、まだ見ていません。