Пожалуйста, объясните, почему проходит этот тест?
[Test]
public void TestNullOps()
{
Assert.That(10 / null, Is.Null);
Assert.That(10 * null, Is.Null);
Assert.That(10 + null, Is.Null);
Assert.That(10 - null, Is.Null);
Assert.That(10 % null, Is.Null);
Assert.That(null / 10, Is.Null);
Assert.That(null * 10, Is.Null);
Assert.That(null + 10, Is.Null);
Assert.That(null - 10, Is.Null);
Assert.That(null % 10, Is.Null);
int zero = 0;
Assert.That(null / zero, Is.Null);
}
Я не понимаю, как этот код даже компилируется.
Похоже, каждое математическое выражение с нулевым возвратом Nullable<T>
(например, 10 / null
является Nullable<int>
). Но я не вижу операторных методов в классе Nullable<T>
. Если эти операторы взяты из int
, почему последнее утверждение не терпит неудачу?