新发现的“奇怪”的数据类型

简介:
一直以来,对于某些数据,如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 ==  nullConsole.Write( "Ok 1!" +  "\n");
   26              if (datetime1.HasValue ==  falseConsole.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 !=  nullConsole.Write( "Ok 3!" +  "\n");
   40              if (datetime1.HasValue ==  trueConsole.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,如需转载请自行联系原作者
目录
相关文章
|
JavaScript API
JS如何模拟鼠标点击X,Y坐标
现在我有个窗口坐标X,Y. 如何利用JS点击该坐标? document.body.onclick = function(){ e = arguments[0]; var dt = e.
2824 0
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
1712 0
|
新零售 搜索推荐
数智洞察 | 新零售的跃迁趋势:从零售1.0到4.0
编者按: 新零售在几年时间内完成了从一株幼苗到参天大树的成长,而就像所有行业、公司、商业模式的成功都离不开社会与时代的土壤一样,新零售也深深根植在独特的时代背景中,并且从时代趋势中持续汲取生长营养。让我们看看哪些时代背景与经济社会趋势,构成了新零售的生长土壤。 全文约3067字,建议阅读时间9分钟。
924 0
|
移动开发 负载均衡 JavaScript
Socket.IO 这个库实现了跨平台的双向通信
Socket.IO 是一个为实时应用提供跨平台实时通信的库。目标是使实时应用在每个浏览器和移动设备上成为可能,模糊不同的传输机制之间的差异。它使用了浏览器支持并采用的 HTML5 WebSocket 标准。以下内容为翻译官网 https://socket.io/docs/ 。 聊天应用程序 demo 地址 https://socket.io/demos/chat/
|
4天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
3849 8
|
14天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11544 130
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
3天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1386 5
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)