Какой смысл Преобразования. ToDateTime (bool)?

Я делал некоторые стандартные программы преобразования типов вчера вечером для системы, я продолжаю работать. Одно из преобразований включает превращающие строковые значения в их эквиваленты DateTime.

При выполнении этого я заметил что Преобразование. ToDateTime () метод имел перегрузку, которая приняла булев параметр.

Первый вопрос? При каких обстоятельствах это могло когда-либо быть полезно?

Я пошел немного далее и попытался выполнить метод в QuickWatch. Так или иначе (TRUE или FALSE), стандартная программа возвращает InvalidCastException.

Второй вопрос? Почему этот метод даже здесь?

Править

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

  • Никогда не может работать
  • Хуже, на самом деле выдаст исключение, когда кто-то попытается назвать его.

Это немного похоже на кого-то делающего автомобиль, загруженный средствами управления, которые активно мешают Вашему механизму работать при использовании.

20
задан Paul Alan Taylor 22 April 2010 в 10:11
поделиться

3 ответа

Это имеет смысл, потому что ToDateTime является частью интерфейса IConvertible , реализованного с помощью bool . Если вы посмотрите в отражатель, вы увидите, что он генерирует исключение InvalidCastException .

Обновление (из Конвертировать ):

public static DateTime ToDateTime(bool value)
{
    return ((IConvertible) value).ToDateTime(null);
}
6
ответ дан 30 November 2019 в 01:26
поделиться

Если вы посмотрите внимательно, большинство перегрузок недопустимы и вызовут исключение InvalidCastException .

Он должен реализовать все приведений, поскольку он реализует IConvertible , и это единственный способ сделать это правильно.

3
ответ дан 30 November 2019 в 01:26
поделиться

Я думаю, что это сделано для полноты и что вы получаете явное исключение InvalidCastException при вызове Convert.ToDateTime с объектом, который является логическим значением.

Если вы посмотрите на все члены Convert, вы увидите, что были включены перегрузки, чтобы принимать все базовые типы для преобразования в каждый из других базовых типов, при этом InvalidCastExceptions выбрасывается, когда нет разумного преобразования.

Думаю, они думали, что это будет более значимым, чем просто отсутствие перегрузок вообще.

4
ответ дан 30 November 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: