当前位置:编程学习 > C#/ASP.NET >>

关于isChecked,isChecked.hasValue和isChecked.Value区别

if (addition.IsChecked.HasValue && addition.IsChecked.Value)
    result = addValues(leftHandSide, rightHandSide);

这样写有什么意义吗 --------------------编程问答-------------------- IsChecked 是 bool? 类型

意思是它不空 并且为 true 的时候才执行 --------------------编程问答-------------------- HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value) --------------------编程问答--------------------
引用 1 楼 sandy945 的回复:
IsChecked 是 bool? 类型

意思是它不空 并且为 true 的时候才执行


不是bool类型,我试过了,hasvalue和value才是bool类型 --------------------编程问答--------------------
引用 2 楼 nianhui 的回复:
HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&……


兄弟,能不能加我QQ具体赐教下,我的QQ:80957072 --------------------编程问答--------------------
引用 4 楼 fcm365 的回复:
引用 2 楼 nianhui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也……

好啊,呵呵 --------------------编程问答-------------------- 是 bool? 类型

可空类型

是当它不为空  且值为true时才执行。 --------------------编程问答--------------------
引用楼主 fcm365 的回复:
▪ 主流PaaS开放平台——谁是最通...▪ 为什么要选光纤通道用于虚拟化...▪ 云应用的未来趋势是什么?▪ 小型企业应如何部署云计算策略?▪ 在进行云迁移之前,企业应注意...if (addition.IsChecked.HasValue && addition.IsChecked.Value)
    result = addValues(leftHandSide, rig……


楼主你问对了,没有意义,脱裤子放屁,多此一举,直接 addition.IsChecked == true 判断就行了,注意 == true 不能去掉,或者 addition.IsChecked.Equals(true) 也行。 --------------------编程问答--------------------
引用 2 楼 NianHui 的回复:
HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~ --------------------编程问答--------------------
引用 7 楼 youzelin 的回复:
[Quote=引用楼主 fcm365 的回复:]
▪ 主流PaaS开放平台——谁是最通...▪ 为什么要选光纤通道用于虚拟化...▪ 云应用的未来趋势是什么?▪ 小型企业应如何部署云计算策略?▪ 在进行云迁移之前,企业应注意...if (addition.IsChecked.HasValue && addition.IsChecked.Value)
    result = addValues(leftHandSide, rig……


楼主你问对了,没有意义,脱裤子放屁,多此一举,直接 addition.IsChecked == true 判断就行了,注意 == true 不能去掉,或者 addition.IsChecked.Equals(true) 也行。
bool 与bool? 类型是不一样的,
bool类型的初始值是flase
bool?类型的初始值是null
楼主所说的IsChecked应该是bool?类型的。 --------------------编程问答-------------------- 擦,编辑乱了..

bool 与bool? 类型是不一样的,
bool类型的初始值是flase
bool?类型的初始值是null
楼主所说的IsChecked应该是bool?类型的。 --------------------编程问答--------------------
引用 10 楼 athlon128 的回复:
擦,编辑乱了..

bool 与bool? 类型是不一样的,
bool类型的初始值是flase
bool?类型的初始值是null
楼主所说的IsChecked应该是bool?类型的。

这2个有什么具体的差能说说么,,bool?的初始值是null,那这个是个指针类型了?他非NULL的情况下又是什么呢? --------------------编程问答-------------------- 我也解释不太清楚,你搜索下 c# 可空类型修饰符 --------------------编程问答--------------------
引用 8 楼 zjty0 的回复:
Quote: 引用 2 楼 NianHui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~

HasValue一直有值的,不是true就是false。

我以前写的一篇关于可空类型的博客 --------------------编程问答--------------------
引用 13 楼 NianHui 的回复:
Quote: 引用 8 楼 zjty0 的回复:

Quote: 引用 2 楼 NianHui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~

HasValue一直有值的,不是true就是false。

我以前写的一篇关于可空类型的博客

额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?而IsChecked.value和IsChecked有什么差别。 --------------------编程问答--------------------
引用 14 楼 zjty0 的回复:
Quote: 引用 13 楼 NianHui 的回复:

Quote: 引用 8 楼 zjty0 的回复:

Quote: 引用 2 楼 NianHui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~

HasValue一直有值的,不是true就是false。

我以前写的一篇关于可空类型的博客

额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?而IsChecked.value和IsChecked有什么差别。


额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?
选中是为true,未选择或者处于未选状态都是false。

而IsChecked.value和IsChecked有什么差别。
IsChecked.value是bool类型
IsChecked是nullable<bool>,可为null(表示未选,注意不是未选中,是未做选择),它可以表示三值逻辑。null true false。 --------------------编程问答-------------------- 当然有意义。

注意两个问题,一个是如果可空类型为null,那么直接获得值的表达式会丢出异常
另一个是,&&运算,左边如果为false,不会执行右边。

所以这么写巧妙地解决了两重判断才能解决同时避免异常的写法。 --------------------编程问答--------------------
引用 9 楼 athlon128 的回复:
Quote: 引用 7 楼 youzelin 的回复:

[Quote=引用楼主 fcm365 的回复:]
▪ 主流PaaS开放平台——谁是最通...▪ 为什么要选光纤通道用于虚拟化...▪ 云应用的未来趋势是什么?▪ 小型企业应如何部署云计算策略?▪ 在进行云迁移之前,企业应注意...if (addition.IsChecked.HasValue && addition.IsChecked.Value)
    result = addValues(leftHandSide, rig……


楼主你问对了,没有意义,脱裤子放屁,多此一举,直接 addition.IsChecked == true 判断就行了,注意 == true 不能去掉,或者 addition.IsChecked.Equals(true) 也行。

bool 与bool? 类型是不一样的,
bool类型的初始值是flase
bool?类型的初始值是null
楼主所说的IsChecked应该是bool?类型的。

晕死,你自己先试一下可以吗?就算是 NULL,也能一样判断,楼主只是想知道是不是 true 而已,至于是不是 NULL,他不关心,你自己试一下再放话! --------------------编程问答--------------------
引用 17 楼 youzelin 的回复:
晕死,你自己先试一下可以吗?就算是 NULL,也能一样判断,楼主只是想知道是不是 true 而已,至于是不是 NULL,他不关心,你自己试一下再放话!


--------------------编程问答--------------------
引用 15 楼 NianHui 的回复:
Quote: 引用 14 楼 zjty0 的回复:

Quote: 引用 13 楼 NianHui 的回复:

Quote: 引用 8 楼 zjty0 的回复:

Quote: 引用 2 楼 NianHui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~

HasValue一直有值的,不是true就是false。

我以前写的一篇关于可空类型的博客

额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?而IsChecked.value和IsChecked有什么差别。


额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?
选中是为true,未选择或者处于未选状态都是false。

而IsChecked.value和IsChecked有什么差别。
IsChecked.value是bool类型
IsChecked是nullable<bool>,可为null(表示未选,注意不是未选中,是未做选择),它可以表示三值逻辑。null true false。


我调试过了,不管你有没有对当前的CheckBox做出选择,  if (check_a.IsChecked.HasValue)下面的语句都会执行的。
下面的未选和未做选择有什么差啊?不解~ --------------------编程问答--------------------
引用 19 楼 zjty0 的回复:
Quote: 引用 15 楼 NianHui 的回复:

Quote: 引用 14 楼 zjty0 的回复:

Quote: 引用 13 楼 NianHui 的回复:

Quote: 引用 8 楼 zjty0 的回复:

Quote: 引用 2 楼 NianHui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~

HasValue一直有值的,不是true就是false。

我以前写的一篇关于可空类型的博客

额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?而IsChecked.value和IsChecked有什么差别。


额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?
选中是为true,未选择或者处于未选状态都是false。

而IsChecked.value和IsChecked有什么差别。
IsChecked.value是bool类型
IsChecked是nullable<bool>,可为null(表示未选,注意不是未选中,是未做选择),它可以表示三值逻辑。null true false。


我调试过了,不管你有没有对当前的CheckBox做出选择,  if (check_a.IsChecked.HasValue)下面的语句都会执行的。
下面的未选和未做选择有什么差啊?不解~

CheckBox有IsChecked这个属性吗? --------------------编程问答-------------------- 我解释下吧!
首先,IsChecked.HasValue不是一个bool类型,这就说明了他返回的不是true或者false;
IsChecked.HasValue其实是一个bool?类型,bool?类型的意思是返回值是否为null;
IsChecked.Value才返回bool类型;

所以我们写if(check_a.IsChecked.HasValue)这句就会判断IsChecked是否为空

再这样写if(check_a.IsChecked.HasValue&&check_a.IsChecked.Value)就会判断是否为空,不为空的话才会判断他的值是否为true;为空的话就直接返回! --------------------编程问答--------------------
引用 21 楼 porenasckx 的回复:
我解释下吧!
首先,IsChecked.HasValue不是一个bool类型,这就说明了他返回的不是true或者false;
IsChecked.HasValue其实是一个bool?类型,bool?类型的意思是返回值是否为null;
IsChecked.Value才返回bool类型;

所以我们写if(check_a.IsChecked.HasValue)这句就会判断IsChecked是否为空

再这样写if(check_a.IsChecked.HasValue&&check_a.IsChecked.Value)就会判断是否为空,不为空的话才会判断他的值是否为true;为空的话就直接返回!

什么叫做IsChecked为空?它何时为空? --------------------编程问答--------------------
引用 20 楼 athlon128 的回复:
Quote: 引用 19 楼 zjty0 的回复:

Quote: 引用 15 楼 NianHui 的回复:

Quote: 引用 14 楼 zjty0 的回复:

Quote: 引用 13 楼 NianHui 的回复:

Quote: 引用 8 楼 zjty0 的回复:

Quote: 引用 2 楼 NianHui 的回复:

HasValue是判断是否有值,Value是进一步判断是否为ture吧。
两个是必须的,并且先后顺序有讲究的。

&&先针对第一项做判断,如果为true,再判断后面的。如果为false,则直接跳过后面的判断。
如果你把Value的判断写前面,就有50%的概率会报错(HasValue放后面也没一点意义)

也可以if (addition.IsChecked!=null&& addition.IsChecked.Value)

什么情况下HasValue会有值,什么情况下会没有值啊,求告知~

HasValue一直有值的,不是true就是false。

我以前写的一篇关于可空类型的博客

额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?而IsChecked.value和IsChecked有什么差别。


额,那比如说一个CheckBox,何时IsChecked.HasValue会是false何时会是true呢?
选中是为true,未选择或者处于未选状态都是false。

而IsChecked.value和IsChecked有什么差别。
IsChecked.value是bool类型
IsChecked是nullable<bool>,可为null(表示未选,注意不是未选中,是未做选择),它可以表示三值逻辑。null true false。


我调试过了,不管你有没有对当前的CheckBox做出选择,  if (check_a.IsChecked.HasValue)下面的语句都会执行的。
下面的未选和未做选择有什么差啊?不解~

CheckBox有IsChecked这个属性吗?

有啊,, --------------------编程问答-------------------- http://msdn.microsoft.com/ZH-CN/library/vstudio/system.windows.forms.checkbox.checked(v=vs.110).aspx --------------------编程问答--------------------
引用 22 楼 zjty0 的回复:
Quote: 引用 21 楼 porenasckx 的回复:

我解释下吧!
首先,IsChecked.HasValue不是一个bool类型,这就说明了他返回的不是true或者false;
IsChecked.HasValue其实是一个bool?类型,bool?类型的意思是返回值是否为null;
IsChecked.Value才返回bool类型;

所以我们写if(check_a.IsChecked.HasValue)这句就会判断IsChecked是否为空

再这样写if(check_a.IsChecked.HasValue&&check_a.IsChecked.Value)就会判断是否为空,不为空的话才会判断他的值是否为true;为空的话就直接返回!

什么叫做IsChecked为空?它何时为空?


当你给他赋值了就不为空!

bool? aa = null;
            aa = false;
            if (aa.HasValue)
            {
                MessageBox.Show(aa.Value.ToString());
            }

去掉aa=false;就不会执行到if内部; --------------------编程问答--------------------
 bool? aa = null;
            aa = false;
            if (aa.HasValue&&aa.Value)
            {
                MessageBox.Show(aa.Value.ToString());
            }


这句也不会执行到if内部,虽然aa.HasValue返回true;但是aa.Value返回了false; --------------------编程问答-------------------- 我前面说IsChecked.HasValue不是bool类型是错误的,应该是IsChecked不是bool。 --------------------编程问答--------------------
引用 27 楼 porenasckx 的回复:
我前面说IsChecked.HasValue不是bool类型是错误的,应该是IsChecked不是bool。

嗯,谢谢,我明白了~ --------------------编程问答--------------------
引用 18 楼 athlon128 的回复:
Quote: 引用 17 楼 youzelin 的回复:


晕死,你自己先试一下可以吗?就算是 NULL,也能一样判断,楼主只是想知道是不是 true 而已,至于是不是 NULL,他不关心,你自己试一下再放话!



无语,谁让你用 Value 属性了?

bool? b = null;
if (b == true)
{
    Console.WriteLine(true);
}
else
{
    Console.WriteLine(false);
}


懂? --------------------编程问答-------------------- 已经说了,如果只关心是不是 true,判断 NULL 是脱裤子放屁,多此一举。
Boolean 类型早就对 == 进行了重载。 --------------------编程问答-------------------- 不好意思,是 override,不是 overload --------------------编程问答--------------------
引用 30 楼 youzelin 的回复:
已经说了,如果只关心是不是 true,判断 NULL 是脱裤子放屁,多此一举。
Boolean 类型早就对 == 进行了重载。


既然他定义了bool?类型,那么就有必要判断是不是为null,否则他这么定义就跟你说的一样,脱裤子放屁
直接定义成bool就可以了 --------------------编程问答--------------------
引用 32 楼 athlon128 的回复:
Quote: 引用 30 楼 youzelin 的回复:

已经说了,如果只关心是不是 true,判断 NULL 是脱裤子放屁,多此一举。
Boolean 类型早就对 == 进行了重载。


既然他定义了bool?类型,那么就有必要判断是不是为null,否则他这么定义就跟你说的一样,脱裤子放屁
直接定义成bool就可以了


没错,定义成 bool? 当然有他的意义所在!checkbox 的三态(checked, unchecked, intermediate),intermediate 就是 bool? 为 null 的状态,当你的程序逻辑关心这个状态的时候你就需要对此进行处理,但是楼主现在的需求是什么?他的问题是什么?
为什么定义成 bool? 类型就一定要去判断?都说了,首先,framework 已经对 == 进行了重写,第二,现在的需求不 care null 的情况,做事情不能一根筋死到底,哦,因为定义成 bool? 所以一定要进行 null 判断?做程序不能这么死板。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,