C# 无法转换类型';int';至';布尔';

C# 无法转换类型';int';至';布尔';,c#,dependencyobject,C#,Dependencyobject,我正在开发一个自定义登录文本框,它具有自动完成功能。然而,当我试图: public static void SetSelectOnMouseOver(DependencyObject obj, bool value) { obj.SetValue(ListBoxItemBehavior.SelectOnMouseOverProperty, (object)(bool)(value ? 1 : 0)); } 我得到一个错误(object)

我正在开发一个自定义登录
文本框
,它具有
自动完成
功能。然而,当我试图:

public static void SetSelectOnMouseOver(DependencyObject obj, bool value)
    {
        obj.SetValue(ListBoxItemBehavior.SelectOnMouseOverProperty, 
            (object)(bool)(value ? 1 : 0));
    }

我得到一个错误
(object)(bool)(值?1:0))>
无法将类型“int”转换为“bool”
,怎么了?

已经是
bool
。为什么不直接使用
(对象)值
,或者甚至只使用

您不能将
int
转换为
bool
,您可以使用一个选项将0转换为false,对于非零值,它将返回
true
。但您可以避免所有这些,只需无条件地使用
Value
参数即可。至少在你的代码中是这样的。我理解这是一个愚蠢的问题,但我看不出有理由否决投票。@Habib没有理由这么说是对的,但我必须让其他人看到它,以便进行认真的审查,甚至在纸上。@Hossam,不确定它的可读性有多高,我的意思是,你在使用bool->然后返回整数值->然后将其转换回bool。@Habib ohh关于这一点,是的,我刚才在那里说它很愚蠢。。直到
David
指出,我才意识到这一点。此外,由于CLR中的所有类型都是从
System.Object
派生的,所以它应该是简单的
value
,而不需要显式转换。如果Nesserry的话,编译器会隐式地抛出它。我刚才在上面回答说“没有理由这样做是对的,但我必须让其他人看到它,以便进行认真的审查,甚至在纸上。”