Просто, чтобы подробнее остановиться на ответах, данных onebyone и Timbo . Когда люди обсуждают использование исключений, обычно кто-то в конечном итоге говорит: «Исключения следует использовать в исключительных ситуациях».
Как вы можете видеть из большинства ответов здесь, если конструктор дает сбой, тогда правильный ответ бросить исключение. Однако, в вашем случае, это не обязательно, что вы не можете создать объект, более того, вы не хотите, чтобы его создал.
Если значения считываются из внешнего источника (например, из файла или потока), есть большая вероятность, что будут получены недопустимые значения, и в этом случае это не совсем исключительная ситуация.
Лично я склонялся бы к проверке аргументов перед построением объекта времени (что-то вроде ответа Тимбо ), и тогда я бы имел утверждение в конструкторе, чтобы проверить, что их аргументы действительны.
В том случае, если вашему конструктору нужен ресурс (например, выделяет память), то это, ИМХО, будет ближе к исключительной ситуации, и тогда вы выдадите исключение.
Как заявили BFree и Джеймс , нет никакой разницы в Start
\
Stop
по сравнению с Включено
в отношении функциональности. Однако решение о том, что использовать, должно основываться на контексте и ваших собственных рекомендациях по стилю кодирования. Это зависит от того, как вы хотите, чтобы читатель вашего кода интерпретировал то, что вы написали.
Например, если вы хотите, чтобы они видели, что вы делаете как начало операции и остановку этой операции, вы, вероятно, захотите использовать Пуск / остановка
. Однако, если вы хотите создать впечатление, что вы активируете доступность или функциональность функции, тогда использование Включено
и истина / ложь
является более естественным выбором.
Я не делаю этого. '
Из документации Microsoft:
Вызов метода Start аналогичен как для параметра Enabled значение true. Точно так же вызов метода Stop аналогичен для параметра Enabled установлено значение false.
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.enabled.aspx
Так что, думаю, разницы нет ...
Нет, они эквивалентны друг другу.
См. Timer.Enabled и Timer.Start / Timer.Stop
To Добавьте к своему Вопросу о консенсусе, я бы сказал, что, вероятно, лучше всего использовать методы Start / Stop, а также, я полагаю, лучше для удобочитаемости.
Джеймс.
Лично мне не нравится, когда свойства имеют слишком много последствий, кроме изменения значения, поэтому я имеют тенденцию придерживаться Start ()
/ Stop ()
, поскольку мне ясно (эээ), что когда вы вызываете метод, вы просите, чтобы что-то произошло.
Тем не менее, я не думаю, что есть много двусмысленности относительно того, что будет делать настройка Enabled = true
:)