Direction.Up is 0, Direction.Down is 1 and so on...Seasons[Seasons["Summer"] = 0] = "Summer";. To understand this line we just need to analyze Seasons["Summer"] = 0, here we can see that it assigns value 0 to the Seasons.Summer, then we know that assignment operator returns the assigned value, so further execution is Seasons[0] = "Summer".Up is initilized with 1, others have auto-incremented value from that point. Direction.Down has value 2, Direction.Left has 3, Direction.Right has 4.