如何:从 bool? 安全地强制转换为 bool(C# 编程指南)
2014-09-12 17:11
176 查看
bool? 可以为 null 的类型可以包含三个不同的值:true、false 和 null。因此,bool? 类型不能用于条件语句,如 if、for 或 while。例如,此代码无法编译,并将报告编译器错误 CS0266:
这是不允许的,因为 null 在条件上下文中的含义并不清楚。若要在条件语句中使用 bool?,请首先检查其 HasValue 属性以确保其值不是 null,然后将它强制转换为 bool。有关更多信息,请参见 bool。如果对使用 null 值的 bool? 执行强制转换,则在条件测试中将引发 InvalidOperationException。下面的示例演示了一种从 bool? 安全地强制转换为 bool 的方法:
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# 编程指南)
- 如何:将字节数组转换为 基本类型(C# 编程指南)
- 如何:合并委托(多路广播委托)(C# 编程指南)
- 如何:实现接口事件(C# 编程指南)
- 如何:实现接口事件(C# 编程指南)
- 如何:写入文本文件(C# 编程指南)
- 如何:创建和使用 C# DLL(C# 编程指南)
- 如何:声明、实例化和使用委托(C# 编程指南)
- 如何:对制造者线程和使用者线程进行同步(C# 编程指南)的详细注释
- 如何:了解向方法传递结构和向方法传递类引用之间的区别(C# 编程指南)
- 如何:在十六进制字符串与数值类型之间转换(C# 编程指南)
- 如何:创建和终止线程(C# 编程指南)
- 如何:创建和终止线程(C# 编程指南)
- 在十六进制字符串与数值类型之间转换 C# 编程指南
- 如何:定义抽象属性(C# 编程指南)
- 如何:引发派生类中的基类事件(C# 编程指南)
- 如何:发布符合 .NET Framework 准则的事件(C# 编程指南)
- 如何:创建和终止线程(C# 编程指南--MSDN)
- 如何:在十六进制字符串与数值类型之间转换(C# 编程指南)
- 如何:创建和终止线程(C# 编程指南)