惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Vercel News
Vercel News
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
量子位
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
IT之家
IT之家
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)

博客园 - Eric.Chai

在WebService中不能返回SqlDataReader 控件生命周期 Solution:TF10216: Team Foundation services are currently unavailable SelectedValue小技巧 web.config点滴:更改login控件对密码安全性的要求 ASP.NET2.0网站配置的数据库连接失败问题 什么是LINQ? MSCRM自动填写当前时间 DIV和SPAN的区别 MSCRM3.0备份与还原 MSCRM IFrame 应用 关于界面元素的隐藏 ASP.NET(c#)实现防止同一用户同时登陆 简体中文转换繁体中文 使用数组动态赋值SQL IN ()条件 C#读文本文件 DatSet与DataTable的关系 SharePoint Server 2007 Web内容管理中的几个关键概念 英语面试题 --Algorithms
“奇怪”的数据类型
Eric.Chai · 2008-03-12 · via 博客园 - Eric.Chai

一直以来,对于某些数据,如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的值发愁了:)