一直以来,对于某些数据,如DateTime、int等,不支持为其赋值为null,但如果数据库中为null,我们就需要用一些特殊手段来处理,如赋值为MinValue等,然后判断如果值为MinValue时,就写入数据库为null。
也有很多人开始使用网络上下载的Jssor等系列数据类型,它能很好的解决数据类型方面导致的问题,但一些常用的三方控件,如DevExpress并不支持自定义的数据类型,这就给使用Jssor等系列数据类型造成了不小的障碍。
但是今天,我却发现可以定义如DateTime?、int?等形式的数据类型,然后用HasValue属性来判断是否为null,用Value属性来访问值。
如下面的代码:
注释掉标记为Error的代码后,运行结果如下图:
有了这些奇怪的数据类型后,我们以后设计数据库的时候就不会为这些为null的值发愁了:)
也有很多人开始使用网络上下载的Jssor等系列数据类型,它能很好的解决数据类型方面导致的问题,但一些常用的三方控件,如DevExpress并不支持自定义的数据类型,这就给使用Jssor等系列数据类型造成了不小的障碍。
但是今天,我却发现可以定义如DateTime?、int?等形式的数据类型,然后用HasValue属性来判断是否为null,用Value属性来访问值。
如下面的代码:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace ConsoleApplication1
6 {
7
class
Program
8 {
9
static
void Main(
string[] args)
10 {
11
// DateTime?
12
DateTime? datetime1 =
new
DateTime();
13
14 datetime1 =
null;
15
Console.Write(datetime1 +
"\n");
16
Console.Write(datetime1.HasValue +
"\n");
17
try
18 {
19
Console.Write(datetime1.Value +
"\n");
20 }
21
catch
22 {
23
Console.Write(
"Error!" +
"\n");
24 }
25
if (datetime1 ==
null)
Console.Write(
"Ok 1!" +
"\n");
26
if (datetime1.HasValue ==
false)
Console.Write(
"Ok 2!" +
"\n");
27
28 datetime1 =
DateTime.Now;
29
Console.Write(datetime1 +
"\n");
30
Console.Write(datetime1.HasValue +
"\n");
31
try
32 {
33
Console.Write(datetime1.Value +
"\n");
34 }
35
catch
36 {
37
Console.Write(
"Error!" +
"\n");
38 }
39
if (datetime1 !=
null)
Console.Write(
"Ok 3!" +
"\n");
40
if (datetime1.HasValue ==
true)
Console.Write(
"Ok 4!" +
"\n");
41
42
// DateTime
43
DateTime datetime2 =
new
DateTime();
44 datetime2 =
null;
// Error
45
46
Console.ReadLine();
47 }
48 }
49 }
注释掉标记为Error的代码后,运行结果如下图:
有了这些奇怪的数据类型后,我们以后设计数据库的时候就不会为这些为null的值发愁了:)
本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/78981,如需转载请自行联系原作者