Иногда часто после создания объекта нужно сразу же назначить кучу его свойств. Такое бывает если класс спроектировал начинающий программист или если класс реально сложный, типа формы. Если класс простой и оперирует всего парой свойств, то желательно создавать конструктор, который будет сразу же инициализировать все необходимые значения. Например, посмотрим на класс Size. Его можно проинициализировать так:
Size s = new Size(); s.Width = 10; s.Height = 10;
А можно воспользоваться другим конструктором:
Size s = new Size(s.Width, s.Height);
Лично я предпочитаю второй вариант, потому что он проще. Меня вообще колбасит от лишних строчек кода, которые нафиг не нужны.
Но что, если мы инициализируем форму? У нее столько свойств, что предусмотреть конструктор на все случаи жизни просто нереально, и даже больше похоже будет на клинику. Я заметил, что большинство в этом случае использует вариант с явным заданием свойств после инициализации объекта. В принципе, ничего в этом плохого нет. Просто есть еще один способ инициализации, который мало кто использует. По крайней мере мой опыт показывает, что большинство его просто игнорируют:
Form f = new Form() { Left = 10, Top = 20 };
Сразу после инициализации формы в фигурных скобках мы задаем свойства левого и верхнего края формы. В принципе, с точки зрения текста мы ничего не выиграли. Сравни:
Form f = new Form(); Left = 10; Top = 20;
Если посчитать количество символов, то сейчас их даже меньше. Но я думаю, что программисты выбирают этот способ не из-за количества символов, а из-за наглядности. Мне кажется, что писать все в своей строке все же нагляднее, поэтому большинство пишет явно
Form f = new Form(); Left = 10; Top = 20;
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
А можно ли ходить по свойствам циклом for?
что то в этом духе:
2Сергей: Без проблем
"Меня вообще колбасит от лишних строчек кода, которые нафиг не нужны."
Мне тоже не нравиться когда в коде лишние строки, а так как опыта у меня мало, очень часто задумываюсь о том что может быть есть стандартные функции для выполнения определённых задач.
Имо, ходить циклом по свойствам есть резон, только если не знаешь их, а так не теряется ли производительность?
К тому же, чтобы задать одно свойство, мы проходимся по всем
-> Pushok
ходить по всем свойствам ради того чтобы инициализировать два - три из них конечно смысла нет.
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.