我总是使用(a)Nullable<>.HasValue
因为我喜欢语义.然而,最近我正在研究其他人现有的代码库,他们Nullable<> != null
专门使用(b)代替.是否有理由使用一个而不是另一个,还是纯粹的偏好?
(一个)
int? a;
if (a.HasValue)
// ...
Run Code Online (Sandbox Code Playgroud)
(b)中
int? b;
if (b != null)
// ...
Run Code Online (Sandbox Code Playgroud) 我的问题可能听起来有点愚蠢,但每当我面对它时它都会让我感到烦恼.有什么区别:
where value.HasValue
Run Code Online (Sandbox Code Playgroud)
和
where value != null
Run Code Online (Sandbox Code Playgroud)
HasValue检查是否value
为null?
我知道DateTime
以自定义格式显示的标准程序,如下所示:
MessageBox.Show(dateSent.ToString("dd/MM/yyyy hh:mm:ss"));
但是,当我将变量从a更改DateTime
为a DateTime?
以接受空值时,我将失去ToString(string)
重载的定义.我需要使用,DateTime?
因为我正在从一个可能具有空值的数据库中读取 - 如果数据库中的字段具有空值,那么我还需要为变量赋值空值.
所以我有两个问题:
1)出于好奇,有没有人知道是否有一个DateTime?
不包含过载的原因ToString(string)
?
2)有人可以为我想要实现的目标建议一种替代方法吗?