【发布时间】:2019-10-08 16:06:19
【问题描述】:
请解释为什么这个测试通过了?
[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);
}
我什至不明白这段代码是如何编译的。
看起来每个带有 null 的数学表达式都返回 Nullable<T>(例如,10 / null 是 Nullable<int>)。但我在Nullable<T> 类中看不到运算符方法。如果这些运算符取自int,为什么最后一个断言没有失败?
【问题讨论】:
标签: c#