C# 设置DateTime类型的变量值等于Null

摘要:
在构建项目时,客户可以输入一个日期字段,而无需输入值。如果他们直接将DateTime设置为Null,则会发生错误。将提示错误:无法将NULL转换为“System.DateTime”,因为它是值类型。在Internet上查看相关数据后,找到解决方案:Null<DateTime>now=DateTime now;Nullable现在=null;当然,如果{}//可以使用HasValue属性,也可以缩写为:DateTime=Null){}。需要注意的一点是,该方法可以将值类型更改为引用类型,但不能使用引用类型。例如,以下代码:Nullable<string>test=“test”;此代码编译无法通过,将报告以下异常:错误1类型“string”必须是不可为null的值类型,才能用作泛型类型或方法“System.nullable<T>”中的参数“T”

做一个项目时,有个日期字段客户可输入可不输入值,直接把DateTime=Null时会出错,提示错误:无法将 NULL 转换成"System.DateTime",因为它是一种值类型

 

在网上查看下相关资料后,找到处理办法:

Nullable<DateTime> now = DateTime.Now;

Nullable<DateTime> now = null;

当然也可以缩写:

DateTime? now = DateTime.Now;

DateTime? now = null;

我们可以直接对now赋值,但实际上是给now.Value赋值。

 

既然可以为空,就涉及到判断了,以下两种方式都是可行的:

if (now != null) {}

if (now.HasValue) {}//可以用HasValue属性

有一点需要注意的是,值类型可以通过这种方法变成引用类型,但是引用类型不可以哟。

比如下面这段代码:

Nullable<string> test = "test";

这段代码编译无法通过,会报出以下异常:

错误 1 类型“string”必须是不可为空的值类型才能用作泛型类型或方法“System.Nullable<T>”中的参数“T”

免责声明:文章转载自《C# 设置DateTime类型的变量值等于Null》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Eigen库的示例使用asp.net core网关Ocelot的简单介绍&amp;amp; Ocelot集成Identity认证下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

appach-maven-3.5.0配置与下载

今天需要搭建javaweb开发的环境,需要配置maven。弄了半天终于配置好了。蛋疼的一批。楼主用的是win10的系统。不知道Linux下的也是不是这么坑! 首先,需要把maven的包下载下来。进入http://maven.apache.org/download.cgi这里下载Binary zip archive apache-maven-3.5.0-bi...

MPU6050滤波、姿态融合(一阶互补、卡尔曼)

前几天做了6050原始数据的串口输出和上位机波形的查看。这篇博客我们来看一下对原始数据的处理。 任务:利用STC89C52RC对MPU6050原始数据进行滤波与姿态融合。 首先我摘抄了一段别人在昨晚这个实验的写的最后总结。1.尽量不要用MPU6050内置的LPF滤波。虽然相比于原始加速度计输出,该LPF可以平滑输出,但是在FFT频谱上的表现相当差劲。2.广...

Java编码常见的Log日志打印问题

前言     本文总结了作者在Java代码检视中遇到的一些关于日志打印的问题,并给出修改建议。因能力有限,难免存在错漏,欢迎指正。 一. 不规范的异常打印     使用slf4j日志组件时,logger.error(与log.warn)接受Throwable参数,以打印异常名和详细的堆栈信息(可能内部调用e.printStackTrace())。    ...

边界值法设计测试用例

大量的测试实践表明,很多错误是发生在输入或输出数据范围的边界上,因此针对各种边界情况设计测试用例,有利于揭露程序中的错误。 边界值分析法是对等价类分析法的补充。边界值分析法利用各输入等价类的最小值、略大于最小值的值、正常值、略小于最大值的值和最大值处进行取值。 1.“单故障”假设 边界值分析的另外一个要点基于一个十分重要的假设“单故障”假设,即失效问题通常...

浅析Block闭包

浅析Block闭包 简单来说,block就是将函数及其上下文封装起来的对象,从功能上可以把它看作是C++中的匿名函数,也可称之为块。 Block类型写法: 返回值+(^块名)+(参数)= ^(参数){ 内容 } 如下所示: int (^myBlock)(int a, int b) = ^(int a, int b){ return a + b; }...

POJO类中布尔类型的变量都不要加is前缀详解

前言 对应阿里巴巴开发手册第一章的命名风格的第八条。 【强制】 POJO类中布尔类型的变量都不要加is前缀,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型Boolean isDeleted; 的属性,它的方法名称也是 isDeleted(), RPC框架在反向解析的时候,“误以为”对应的属性名称是deleted,导致属性获取不到抛出异常。...