C # - мы должны проверить параметр прохода в лямбду? - PullRequest
1 голос
/ 19 мая 2011

Должны ли мы проверять входные параметры лямбда-выражения?Другими словами, должны ли мы проверять параметры o и s?

class MainWindow : Form /// implementation I
{
    ...
    private ToolStripMenuItem mnuFileExit = new ToolStripMenuItem();

    private void BuildMenus()
    {
        ...
        mnuFileExit.Click += (o, s) =>
        {
            MessageBox.Show(string.Format("{0} sent this event", o.ToString()));
            Application.Exit();
        };
        ... 
    }
    ...
}

class MainWindow : Form /// implementation II
{
    ...
    private ToolStripMenuItem mnuFileExit = new ToolStripMenuItem();

    private void BuildMenus()
    {
        ...
        mnuFileExit.Click += (o, s) =>
        {
            if (o != null)
            {
                MessageBox.Show(string.Format("{0} sent this event", o.ToString()));
                Application.Exit();
            }
        };
        ... 
    }
    ...
}

Ответы [ 2 ]

4 голосов
/ 19 мая 2011

Нет необходимости проверять, что 1-й параметр равен нулю; потому что это отправитель и всегда ненулевой.

Я не согласен с выбором имен аргументов (o и s). Обычно первый параметр называется s (для отправителя), а второй параметр называется e (для события).

3 голосов
/ 19 мая 2011

Вам не нужно добавлять нулевую проверку отправителю (o), поскольку он является отправителем события. Это mnuFileExit, который не будет нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...