Eric's Blog

有需求才有进步

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
一直以来,对于某些数据,如DateTime、int等,不支持为其赋值为null,但如果数据库中为null,我们就需要用一些特殊手段来处理,如赋值为MinValue等,然后判断如果值为MinValue时,就写入数据库为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的值发愁了:)
posted on 2008-03-12 00:44  Eric.Chai  阅读(286)  评论(0编辑  收藏  举报