gpt4 book ai didi

c# - 带空值的数学运算

转载 作者:IT王子 更新时间:2023-10-29 03:54:48 28 4
gpt4 key购买 nike

请解释为什么这个测试通过了?

[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 / nullNullable<int> )。但我在 Nullable<T> 中没有看到运算符方法类(class)。如果这些运算符取自 int ,为什么最后一个断言没有失败?

最佳答案

来自 MSDN :

预定义的一元和二元运算符以及为值类型存在的任何用户定义的运算符也可以由可空类型使用。如果操作数为空,则这些运算符产生空值;否则,运算符使用包含的值来计算结果。

这就是为什么所有测试都通过的原因,包括最后一个 - 无论操作数值是什么,如果另一个操作数是null,那么结果就是null

关于c# - 带空值的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7660449/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com