Сокращение создания объектов C#
У меня есть код:
ToolStripMenuItem item1 = new ToolStripMenuItem();
ToolStripMenuItem item2 = new ToolStripMenuItem();
ToolStripMenuItem item3 = new ToolStripMenuItem();
ToolStripMenuItem item4 = new ToolStripMenuItem();
Можно ли как-нибудь сократить его, чтобы, например, написать tItem item1 = new tItem() ?
Ответы (5 шт):
Можно использовать синтаксис using as alias. Выглядеть это будет приблизительно как-то так:
using tItem = ToolStripMenuItem
Но, в данном случае всё же лучше так не делать. Оригинальное название класса ToolStripMenuItem более описательно, чем tItem. Также стоит учесть, что это всё-таки стандартный класс WinForms и подобный подход рано или поздно собьёт с толку не только вас, но и других людей, которые потом будут сопровождать ваш код.
Переменные одного типа можно объявлять через запутую:
ToolStripMenuItem item1 = new ToolStripMenuItem(), item2 = new ToolStripMenuItem(), item3 = new ToolStripMenuItem(), item4 = new ToolStripMenuItem();
При желании можно поделить на несколько строк (хотя я бы не стал):
ToolStripMenuItem item1 = new ToolStripMenuItem(), item2 = new ToolStripMenuItem(),
item3 = new ToolStripMenuItem(), item4 = new ToolStripMenuItem();
Вместо длинного названия типа можно использовать var:
var item1 = new ToolStripMenuItem();
var item2 = new ToolStripMenuItem();
var item3 = new ToolStripMenuItem();
var item4 = new ToolStripMenuItem();
Ещё вариант в кучу
Func<ToolStripMenuItem> c = () => new ToolStripMenuItem();
ToolStripMenuItem item1 = c(), item2 = c(), item3 = c(), item4 = c(), item5 = c();
Ну или
Func<ToolStripMenuItem> c = () => new ToolStripMenuItem();
(var item1, var item2, var item3, var item4, var item5) = (c(), c(), c(), c(), c());
Еще добавлю. Можно хранить однотипные элементы в списке или массиве.
Массив
ToolStripMenuItem[] items = new ToolStripMenuItem[4]();
foreach (ToolStripMenuItem item in items)
{
item = new ToolStripMenuItem();
}
Список
List<ToolStripMenuItem> items = new List<ToolStripMenuItem>();
for (int i = 0; i < 4; i++)
{
items.Add(new ToolStripMenuItem());
}