Почему компилятор не жалуется на дополнительные ',' в Array или Object Initializer? - PullRequest
5 голосов
/ 20 апреля 2010

Используя простой тип как

class A {
  public int X, Y;
}

с объектными инициализаторами, можно написать

var a = new A { X=0, Y=0 };

Но компилятором также допускается следующее:

var a = new A { X=0, Y=0, }; // notice the additional ','

То же самое для int[] v = new int[] { 1, 2, };

Это выглядит немного странно ... Они забыли отклонить дополнительный ',' в компиляторе или есть более глубокий смысл этого?

Ответы [ 2 ]

5 голосов
/ 20 апреля 2010

В этом нет ничего глубокого, это общепринято для компиляторов многих (но не всех) языков. Это облегчает создание списков:

var a = new A {
    X = 0,
    Y = 0,
};

Если вы хотите добавить Z = 0, вам не нужно редактировать предыдущую строку, чтобы добавить запятую. Это улучшает дельты контроля исходного кода, поскольку вместо одной новой строки и одной измененной строки имеется только одна новая строка.

1 голос
/ 20 апреля 2010

Это также упрощает реализацию генераторов кода. Им не нужно проверять последнюю запятую.

...