gpt4 book ai didi

C# 可以将值类型与 null 进行比较

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

我今天遇到了这个问题,不知道为什么 C# 编译器没有抛出错误。

Int32 x = 1;
if (x == null)
{
Console.WriteLine("What the?");
}

我对 x 怎么可能为空感到困惑。特别是因为这个赋值肯定会引发编译器错误:

Int32 x = null;

x 是否有可能变为 null,Microsoft 只是决定不将此检查放入编译器,还是完全遗漏了?

更新:在写这篇文章的代码乱七八糟之后,编译器突然发出警告,表示表达式永远不会为真。现在我真的迷路了。我将对象放入一个类中,现在警告消失了,但留下了一个问题,值类型最终是否可以为 null。

public class Test
{
public DateTime ADate = DateTime.Now;

public Test ()
{
Test test = new Test();
if (test.ADate == null)
{
Console.WriteLine("What the?");
}
}
}

最佳答案

这是合法的,因为运算符重载决策有一个唯一的最佳运算符可供选择。有一个 == 运算符,它接受两个可为 null 的整数。本地整数可转换为可为空的整数。 null 文字可转换为可为 null 的 int。因此,这是 == 运算符的合法用法,并且始终会导致 false。

同样,我们也允许您说“if (x == 12.6)”,这也始终为假。本地整数可转换为 double ,字面量可转换为 double ,显然它们永远不会相等。

关于C# 可以将值类型与 null 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972262/

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