C # - аргументированный вызов метода - PullRequest
0 голосов
/ 27 января 2012

У меня есть класс, в котором есть 3 метода

  1. публичный DoSth
  2. приватный DoItForReal
  3. частный DoSthExtra

Пользователь может вызвать один из 2 конструкторов (объект может быть изменен только во время строительства)

Я хочу, чтобы пользователь вызывал метод DoSth, и в зависимости от того, с каким конструктором вызывался, я жду вызова: - DoItForReal (только!) - DoItForReal и DoSthExtra

У меня вопрос, какая реализация лучше по производительности (DoSth будет вызываться 30 раз в секунду)?

Реализация1 (используется if statemant):

DoSth()
{
    DoItForReal();
    if (ctor1)
        DoSthExtra();
}

Реализация2 (с использованием событий):

private event Action DoSthEvent;
Ctor1()
{
    DoSthEvent += DoItForReal;
    DoSthEvent += DoSthExtra;
}
Ctor2()
{
    DoSthEvent += DoItForReal;
}
DoSth()
{
    DoSthEvent();
}

1 Ответ

2 голосов
/ 27 января 2012

30 раз в секунду - ничего . Вы должны определенно пойти с первым решением - гораздо яснее, что происходит. (Почему вы хотите использовать событие для этого, даже во втором случае мне не подходит ... Простая переменная типа Action была бы лучше. Не то, чтобы вы действительно использовали это как событие.)

Я подозреваю, первая форма также быстрее, но даже не стоит сравнивать - потому что любая разница в скорости будет совершенно незначительной, когда вы говорите об этом 30 раз в секунду. *

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