Эффективное объявление / создание переменных / элементов управления - PullRequest
2 голосов
/ 03 сентября 2010

Я работаю над очисткой приложения, с которым я почти закончил, и заметил кое-что, что заставило меня задуматься о том, почему это делается именно так. Хотя вы можете редактировать .Designer.cs в своем проекте для формы, в нем есть много автоматически сгенерированных вещей, таких как создание переменных и элементов управления. У них есть код, сгенерированный конструктором форм Windows, который я почти никогда не трогал. Но так как я делал переменные в формате, они мне нравятся:

string strValue1,
       strValue2;

По сравнению с:

string strValue1;
string strValue2;

Я заметил, что Windows объявляет элементы управления в нижней части файла, а затем создает / создает их в функции InitializeComponent (). Теперь я знаю, что могу взять «новые» экземпляры и поместить их туда, где находятся объявления, и, кажется, все работает нормально. Мой вопрос: в чем преимущество одного над другим? Или это так, что Windows может автоматически сгенерировать их для нас? Если бы была возможность повысить производительность, если бы это было так, а не иначе, я бы хотел знать. Спасибо ребята за помощь.

Пример 1:

private void InitializeComponent()
{
  ...
  this.control1 = new System.Windows.Forms.Control();
  ...
}

...

System.Windows.Forms.Control control1;

Пример 2:

private void InitializeComponent()
{
  ...
}

...

System.Windows.Forms.Control control1 = new System.Windows.Forms.Control();

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Не не редактировать этот код . Он генерируется автоматически, и дизайнер фактически читает код обратно, чтобы воссоздать форму в конструкторе. Когда вы делаете подобные изменения, очень вероятно, что вы будете бомбить дизайнера, и ваша форма станет неработоспособной. Даже если вам удастся избежать его поломки, ваши изменения просто исчезнут, когда вы измените форму в конструкторе.

Все, что находится в регионе с пометкой «Код, сгенерированный конструктором Windows Forms», не используется.

Нет никакой пользы от таких изменений. Он генерирует точно такой же код.

0 голосов
/ 03 сентября 2010

Вы можете получить больше контроля над материалом, когда это будет сделано в InitializeComponent

Если вы откроете свой файл .cs (не дизайнер) и посмотрите на конструктор

public Form1()
{
    InitializeComponent();
}

таким образом, вы можете выполнить код до того, как будут созданы элементы управления ..

если вы просто создадите элементы управления при их объявлении, то вы не сможете сделать это ...

...