[C#] Поругайте код
От: Любопытный  
Дата: 23.03.11 06:18
Оценка:
Всем привет.

Начал учить шарп, естественно, возникают вопросы, типа, а как правильно делать.
Итак, есть код. Идея простая и, видимо, набившая все оскомину
В приложении две формы: главная и форма логина. Нужно сначала залогиниться и по результатам показать главную форму или закрыть приложение.
Вот код:

namespace Test
{
  public class MyApplicationContext : ApplicationContext
  {
    private LinkedList<Form> forms = new LinkedList<Form>();
    private void FormClosed(Object sender, FormClosedEventArgs e)
    {
      LinkedListNode<Form> current = forms.Find((Form)sender);
      if (current.Value != forms.Last.Value)
      {
        this.MainForm = current.Next.Value;
      }
      this.MainForm.Show();
    }
    public void AddForm(Form form)
    {
      if (forms.Count == 0)
      {
        forms.AddFirst(form);
        this.MainForm = form;
      }
      else
      {
        forms.AddAfter(forms.Last, form);
      }
      form.FormClosed += this.FormClosed;
    }
  }
  static class Program
  {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      MyApplicationContext ctx = new MyApplicationContext();
      ctx.AddForm(new fmLoginForm());
      ctx.AddForm(new fmMainForm());
      Application.Run(ctx);
    }
  }
}


Ну и вопрос: что здесь не так? Нет ли проблем с памятью? Может, есть какие-то Best Practices для таких ситуаций?
Может, надо использовать List вместо LinkedList? Ну, и так далее.
Анализатор кода в VS предлагает создание форм завернуть в using, хотя сама VS генерит примерно такой же код.


24.03.11 11:57: Перенесено модератором из '.NET' — TK
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.