从 bool? 安全地强制转换为 bool
2012-08-20 16:48
197 查看
bool? 可以为 null 的类型可以包含三个不同的值:true、false 和 null。因此,bool? 类型不能用于条件语句,如 if、for 或 while。例如,此代码无法编译,并将报告编译器错误 CS0266:
bool? b = null;if (b) // Error CS0266.{}
这是不允许的,因为 null 在条件上下文中的含义并不清楚。若要在条件语句中使用 bool?,请首先检查其 HasValue 属性以确保其值不是 null,然后将它强制转换为 bool。有关更多信息,请参见 bool。如果对使用 null 值的 bool? 执行强制转换,则在条件测试中将引发 InvalidOperationException。下面的示例演示了一种从 bool? 安全地强制转换为 bool 的方法:
bool? test = null;
...// Other code that may or may not
// give a value to test.
if(!test.HasValue) //check for a value
{
// Assume that IsInitialized
// returns either true or false.
test = IsInitialized();
}
if((bool)test) //now this cast is safe
{
// Do something.
}
bool? b = null;if (b) // Error CS0266.{}
这是不允许的,因为 null 在条件上下文中的含义并不清楚。若要在条件语句中使用 bool?,请首先检查其 HasValue 属性以确保其值不是 null,然后将它强制转换为 bool。有关更多信息,请参见 bool。如果对使用 null 值的 bool? 执行强制转换,则在条件测试中将引发 InvalidOperationException。下面的示例演示了一种从 bool? 安全地强制转换为 bool 的方法:
bool? test = null;
...// Other code that may or may not
// give a value to test.
if(!test.HasValue) //check for a value
{
// Assume that IsInitialized
// returns either true or false.
test = IsInitialized();
}
if((bool)test) //now this cast is safe
{
// Do something.
}
相关文章推荐
- 如何:从 bool? 安全地强制转换为 bool(C# 编程指南)
- 如何:从 bool? 安全地强制转换为 bool(C# 编程指南)
- int指针强制转换成short指针安全吗?
- 自定义数据类型中安全的bool转换操作
- 尽量使用安全的转换方式qobject_cast,少用强制转换
- Java面向对象【经典案例】强制/自动类型转换与类型安全的转换
- 使用 as 和 is 运算符安全地进行强制转换
- [C#] as 和 is 运算符以及安全的类型强制转换
- Android静态安全检测 -> 强制类型转换本地拒绝服务漏洞
- 安全地转换成bool方法
- [C#] as 和 is 运算符以及安全的类型强制转换
- 类型强制转换与计算机的原码,补码,反码
- 调试MVC源代码时"[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 ..."解决办法
- 写一个复数类Complex,(复数形如3.2+5.6i,2.9-1.3i,其中i*i=-1)。要求支持+-*/,++、--,到bool类型和string类型的转换,支持>>、<<运算符。
- 使用dynamic_cast强制将基类指针转换成子类指针
- C++类型强制转换<转>
- interface强制转换的有趣现象
- 关于ActionScript3中的事件类强制转换失败的问题
- .net4.0切换2.0时,SplitContainer”的对象强制转换为类型
- 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”