Используя nop для удаления блока через отладчик является полезным приемом. Конечно, откладывание кода намного более трудно!!!
Поскольку это допустимый синтаксис.
На самом деле, это так.
Когда вы создаете объект с использованием синтаксиса инициализатора объекта, вам разрешается оставлять запятую в конце последний элемент, даже если вы закроете блок инициализатора тут же.
Причина этого, вероятно, в том, что это облегчает возврат и редактирование его позже, поскольку вы забываете добавить запятую после предыдущего-последнего-элемента является проблемой времени компиляции №1 с инициализаторами объектов.
Это сделано намеренно. Также работает с членами перечисления. (чтобы было проще добавить что-нибудь)
Почему он не должен компилироваться?
Этот тип синтаксиса разрешен также и в Python.
Он компилируется, потому что это допустимый синтаксис C #. То же самое можно сделать с массивами
string [] meh = {"a", "b", "c",};
Потому что это разрешено. Как правило, разрешение запятой в таких формах (и фактически использование этой «привилегии») полезно, чтобы программисты могли добавлять дополнительные элементы в список, не рискуя забыть добавить запятую в конце предыдущего элемента.
Это часть спецификации языка C # : инициализаторы объектов.
Это допустимый синтаксис в C #
давайте посмотрим
var c = new List<int>() { 1, 2, 3 ,};
FWIW, он уже был действителен в C.
Моя любимая причина использовать такой синтаксис (особенно при определении перечислений) заключается в том, что когда вы добавляете элемент в список, исходный элемент управления видит изменения только в одной строке (новой). Он не помечает предыдущий как измененный (из-за добавления запятой). Гораздо более читаемая разница.
Мои 2 цента.