首页新闻找找看学习计划

有意思的一个问题,c#怎么可以判断出一个属性是否赋值

0
悬赏园豆:10 [待解决问题]

1.大家有什么办法可以判断出,一个类的属性是否赋值。

2.比如datetime类型属性

我现在是 datetime? test_datetime然后test_datetime==null{自定义处理},还有更好的办法吗?

nyth的主页 nyth | 初学一级 | 园豆:148
提问于:2013-06-26 17:23
< >
分享
所有回答(10)
1

没赋值就直接判断是不是null

WuRang | 园豆:1730 (小虾三级) | 2013-06-26 17:28

它们都不会为null的

支持(0) 反对(0) nyth | 园豆:148 (初学一级) | 2013-06-26 18:39

@nyth: 我的意思是这样

 private DateTime? _FDate;  
 public DateTime? FinishDate  
 {  
     set { _FDate = value; }  
     get { return _FDate; }  
 } 

通过使用? 让它能为null,这样就不会有初值了,和你列出的方法一样,没有其他的方法

支持(0) 反对(0) WuRang | 园豆:1730 (小虾三级) | 2013-06-27 09:03

@nyth: 或者是你知道初值是什么,比如0000-00-00,然后去看变量的值是否为初值来判断是不是赋值了,当然有个缺点就是如果需要赋值成0000-00-00,会被理解成没有赋值

支持(0) 反对(0) WuRang | 园豆:1730 (小虾三级) | 2013-06-27 09:04

@WuRang: 

这样我程序中所有用到这个类的datetime类的属性,都需要修改一下类型(本来为datetime,如果按照你的该法,就会提示类型不一致,需要修改),工作量大,麻烦。

支持(0) 反对(0) nyth | 园豆:148 (初学一级) | 2013-07-01 14:50
0

判断当前值是否为默认值

Astar | 园豆:40805 (高人七级) | 2013-06-26 17:51

没明白!

支持(0) 反对(0) nyth | 园豆:148 (初学一级) | 2013-07-01 14:52
0

if(test_datetime.HasValue)

狗年月 | 园豆:87 (初学一级) | 2013-06-26 18:28

可以吗?我试了下不行的!

支持(0) 反对(0) nyth | 园豆:148 (初学一级) | 2013-06-26 18:40
0

最好的办法是设置断点,跑起来模拟环境,看看没赋值的情况下是什么,不为NULL的类型一般有默认值,否则是NULL

yj4018no1 | 园豆:181 (初学一级) | 2013-06-26 21:26
0

给每个属性再配一个bool类型属性,然后在属性的set里改变bool属性的值。判断时判断bool属性

 

奇怪的问题就得用奇怪的办法

老箫 | 园豆:188 (初学一级) | 2013-06-27 00:09
0

顶楼上

Invictus | 园豆:76 (初学一级) | 2013-06-27 10:18
0

类型后面加问号 比如int?  就可以用HasValue判断,这种方法应该会对值类型失效, 引用类型没默认值的情况下可以实用null判断,但是值类型会失效。所以没太好的方法,如果真要判断 就用事件来解决这个问题,赋值后触发事件就行了。

````` | 园豆:14268 (专家六级) | 2013-06-27 11:20
0

将类型全部修改为可空类型(如:int? Id{get;set;}),然后判断Id!=null,即可。

幻天芒 | 园豆:36522 (高人七级) | 2013-06-27 12:46
0

 default(T) ==xx

bree | 园豆:220 (菜鸟二级) | 2013-06-27 20:55
0

test_datetime==DateTime.MinValue;

zhouyang151 | 园豆:202 (菜鸟二级) | 2014-08-13 14:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册