the*_*nut 48 c# int casting boolean
我面临的问题是,在我的情况下,C#无法将数字1强制转换为bool.在我的情况下(bool)intValue
不起作用.我得到了InvalidCastException
.我知道我可以使用,Convert.ToBoolean(...)
但我只是想知道它不起作用.对此有何解释?
我的代码是
if (actualValueType.Name == "Boolean" || setValueType.Name == "Boolean")
{
if ((bool)actualValue != (bool)setValue)
...
}
Run Code Online (Sandbox Code Playgroud)
Rit*_*ton 55
没有必要施放:
bool result = intValue == 1;
Run Code Online (Sandbox Code Playgroud)
来自文档:
包含bool可以更容易地编写自我记录代码
bool值为true或false
Jak*_*cki 40
int
并且bool
不能隐式转换(例如,与C++相比).
这是语言设计者做出的一个有意识的决定,以便在条件中使用数字时保存代码免于错误.条件需要boolean
明确地取值.
不可能写:
int foo = 10;
if(foo) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
想象一下,如果开发人员想要将foo与20进行比较但是错过了一个等号:
if(foo = 20) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将编译和工作 - 副作用可能不是很明显.
做了类似的改进switch
:你不能从一个案件落到另一个案件 - 你需要一个明确的break
或return
.
kra*_*s88 36
bool b = Convert.ToBoolean(0);
Run Code Online (Sandbox Code Playgroud)
将0和null转换为false,将其他任何内容转换为true.