相关疑难解决方法(0)

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

我今天碰到了这个,并且不知道为什么C#编译器没有抛出错误.

Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}
Run Code Online (Sandbox Code Playgroud)

我很困惑x怎么可能是null.特别是因为这个赋值肯定会抛出编译器错误:

Int32 x = null;
Run Code Online (Sandbox Code Playgroud)

是否有可能x变为null,微软是否决定不将此检查放入编译器,还是完全错过了?

更新:在编写了这篇文章的代码后,编译器突然发出一个警告,表达式永远不会成立.现在我真的迷路了.我把对象放到一个类中,现在警告已经消失,但是留下了问题,值类型最终是否为null.

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

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

c# null

85
推荐指数
3
解决办法
2万
查看次数

为什么你可以在VB.NET中为整数分配Nothing?

为什么我允许Nothing在VB.NET中分配值类型:

Dim x as Integer = Nothing
Run Code Online (Sandbox Code Playgroud)

但我不允许null在C#中分配:

int x = null;
Run Code Online (Sandbox Code Playgroud)

c# vb.net

28
推荐指数
3
解决办法
2万
查看次数

Null(在C#中)Vs Nothing(在vb.net中)

C#NULL与vb.net有什么不同?

Console.WriteLine(Nothing = "") => True
Run Code Online (Sandbox Code Playgroud)

VS

Console.WriteLine(null==""); => False
Run Code Online (Sandbox Code Playgroud)

我的理解是,这两个nullNothing是一样的.但上面的代码清楚地解释了它不是.

nullVB.NET 中C#的等价物是什么?

c# vb.net

14
推荐指数
2
解决办法
6287
查看次数

标签 统计

c# ×3

vb.net ×2

null ×1