如何在C#中检查可空的有效长度中的char值

Cod*_*elp -1 c#

我正在浏览一段C#代码,如下所示:

if (((long)ShopperId != 0) && ((long)ShopperId != null) && ((long)ShopperId != '0'))
Run Code Online (Sandbox Code Playgroud)

我理解前两个检查,但第三个检查呢?这甚至是一个有效的C#语句.

然而,这已经生产了一段时间,没有任何错误.

Dam*_*ver 5

Chars可以隐式转换为以下任意一种:

ushort,int,uint,long,ulong,float,double,或decimal

根据C#语言规范(第5版,第6.1.2节).

你会注意到它Char被定义为:

将字符表示为UTF-16代码单元.

因此,它可以轻松适应任何具有至少16位精度的数字类型.


因此,回答"为什么它编译"问题的一部分.隐含的"这段代码有意义吗?" 问题,答案是"可能不是".您通常不会使用(long)'0'第三个"哨兵"值来表示与" 0或"相同的"事物" null.