为什么可以'操作符不能用于解析非空值类型
本文关键字:用于 类型 空值 不能 操作符 为什么 | 更新日期: 2023-09-27 18:09:02
每个开发者都有他/她自己的标准。有些开发人员喜欢使用<type>.TryParse()
,有些开发人员喜欢使用(type)object;
,而有些开发人员则喜欢使用关键字。
我注意到'as'
操作符的一个小问题——你不能用它来执行非空值类型之间的转换。我在MSDN上阅读了as关键字的文档,他们也解释说"您可以使用as操作符在兼容引用类型或可空类型之间执行某些类型的转换。"
我用下面的代码进行了测试:
int i = 0;
var k = i as int; //Breaks
int i = 0;
var k = i as int?; //Works
是什么原因决定了as
关键字以这种方式执行?
如果解析失败,
as
操作符将返回null
。由于int
是一个不可空的值类型,因此您会得到错误,而int?
或Nullable<int>
可以保存null
值,这就是第二个代码片段有效的原因。
参见:as (c# Reference)
可以使用as操作符来执行某些类型的转换兼容的引用类型或可空类型
也来自同一文档链接
as操作符类似于强制转换操作。但是,表示转换
是不可能的,因为返回null而不是引发异常。