1. Сомневаюсь над необходимостью использования структуры.
2. Свойства можно заменить на автосвойства
3. На строках studentAction[counterDelegates] происходит перезатирание
4. Смысла в объявлении delegate void DelegateAction(); нет. Есть обобщённый Action который выглядит точно также
5.
Console.WriteLine("{0}, you've just got a grant", this.Name + " " + this.Surname);
Можно упростить до
Console.WriteLine($"{Name} {Surname}, you've just got a grant");
Ещё и производительность улучшиться.
6. university - плохое название для переменной, которая хранит студентов.
Так можно было бы назвать объект "Университет", но его тут нет.
Ну и ещё можно добавить то, что это достаточно нестабильная сериализация - результат будет сильно зависеть от того, что там компилятор напридумал под конкретной платформой.
Евгений Иванов,
1. Никогда не видел, чтобы методы классифицировали по их назначению (мутатор и ацессор). Может быть, в научных кругах так делают, но на практике в этом нужды нет.
2. Обычно говорят не "герметизированный", а " запечатанный".
3. Лучше не искажать, а так и писать - sealed, virtual, override
4.
Модификаторов доступа не так уж и много и их все можно запомнит по названию, тк всё вполне логично:
public
internal
protected
protected internal
private
(Вроде есть ещё private protected, но он неинтуитивный)
Так что их точно не более шести.
5. partial
По обращению и поведению он никак не отличается от других - разница только на уровне исходников.
Я бы это скорее назвал частичным объявлением, чем отдельным самостоятельным видом методов.
2. Свойства можно заменить на автосвойства
3. На строках studentAction[counterDelegates] происходит перезатирание
4. Смысла в объявлении delegate void DelegateAction(); нет. Есть обобщённый Action который выглядит точно также
5.
Можно упростить до
Ещё и производительность улучшиться.
6. university - плохое название для переменной, которая хранит студентов.
Так можно было бы назвать объект "Университет", но его тут нет.