没赋值就直接判断是不是null
它们都不会为null的
@nyth: 我的意思是这样
private DateTime? _FDate; public DateTime? FinishDate { set { _FDate = value; } get { return _FDate; } }
通过使用? 让它能为null,这样就不会有初值了,和你列出的方法一样,没有其他的方法
@nyth: 或者是你知道初值是什么,比如0000-00-00,然后去看变量的值是否为初值来判断是不是赋值了,当然有个缺点就是如果需要赋值成0000-00-00,会被理解成没有赋值
@WuRang:
这样我程序中所有用到这个类的datetime类的属性,都需要修改一下类型(本来为datetime,如果按照你的该法,就会提示类型不一致,需要修改),工作量大,麻烦。
判断当前值是否为默认值
没明白!
if(test_datetime.HasValue)
可以吗?我试了下不行的!
最好的办法是设置断点,跑起来模拟环境,看看没赋值的情况下是什么,不为NULL的类型一般有默认值,否则是NULL
给每个属性再配一个bool类型属性,然后在属性的set里改变bool属性的值。判断时判断bool属性
奇怪的问题就得用奇怪的办法
顶楼上
将类型全部修改为可空类型(如:int? Id{get;set;}),然后判断Id!=null,即可。
default(T) ==xx
test_datetime==DateTime.MinValue;