Гарантируется ли нулевое значение в .NET DateTime меньше реального значения?

Swift 4

В вашем UIViewController установите это:

let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton
16
задан Wayne Werner 12 July 2012 в 12:51
поделиться

2 ответа

Просто дополнение, вы можете позвонить Nullable.GetValueOrDefault()

Пример:

if (dateTime1.GetValueOrDefault() < dateTime2)
  ...
1
ответ дан m02ph3u5 12 July 2012 в 12:51
поделиться

Это не гарантируется для всех типов, потому что оператор < может быть переопределен, чтобы иметь смысл для определенного класса, и этот код может не принимать во внимание нуль. Для стандартных операторов для Nullable<T>, null будет сравниваться, чтобы быть меньше значения.

Но если вы имеете дело с пользовательскими типами, учтите, что их операторы могут не принимать во внимание нули. Например, посмотрите на этот глупый пример:

void Main()
{
    Foo x = null;
    Foo y = new Foo();

    Console.WriteLine(x < y);
    Console.WriteLine(x > y);
}

class Foo 
{
    public static bool operator <(Foo lhs, Foo rhs)
    {
        if (ReferenceEquals(lhs, null))
            return false;
        return true;
    }

    public static bool operator >(Foo lhs, Foo rhs)
    {
        return false;
    }
}

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

0
ответ дан driis 12 July 2012 в 12:51
поделиться
Другие вопросы по тегам:

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