Почему в конце инициализатора коллекции может быть запятая? - PullRequest
9 голосов
/ 09 сентября 2010

Это всегда меня озадачивало, но я предполагаю, что есть очень разумное объяснение того, почему это происходит.

Если у вас есть инициализатор коллекции, компилятор допускает запятую, например

new Dictionary<string, string>
{
    { "Foo", "Bar "},
};

и

new List<string>
{
    "Foo",
};

Кто-нибудь знает, почему эта запятая допускает компилятор

Ответы [ 5 ]

8 голосов
/ 09 сентября 2010

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

5 голосов
/ 09 сентября 2010
4 голосов
/ 09 сентября 2010

Это удобство для программиста, поскольку разработчик может просто скопировать и вставить последнюю строку, чтобы расширить список. C # /. NET хорошо так:)

3 голосов
/ 09 сентября 2010

Я предполагаю по двум причинам:

  1. Было бы дополнительной работой, чтобы компилятор распознавал и обрабатывал последнюю строку иначе, чем остальные.
  2. На самом деле удобно иметь запятую, поскольку она позволяет выстраивать линии без ненужных сбоев сборки.
1 голос
/ 09 сентября 2010

Когда вы меняете это:


     new List<string>
     { 
         "Foo", 
     }; 

к этому:


     new List<string>
     { 
         "Foo", 
         "Bar", 
     }; 

Diff-Tools выделит только добавленную строку. Так, например во время просмотра кода вам нужно только проверить новую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...