每个开发人员都有自己的标准。一些开发人员喜欢<type>.TryParse()
,一些开发人员喜欢使用(type)object;
投射,而一些开发人员喜欢使用关键字。
我注意到'as'
运算符出现了打嗝 - 您无法使用它来执行非可空值类型之间的转换。我在关键字上阅读MSDN上的文档,他们还将其解释为“您可以使用as运算符在兼容的引用类型或可空类型之间执行某些类型的转换。”
我用以下方法对此进行了测试:
int i = 0;
var k = i as int; //Breaks
int i = 0;
var k = i as int?; //Works
as
关键字以这种方式执行的原因是什么?
答案 0 :(得分:8)
as
运算符将返回null
。由于int
是不可为空的值类型,因此您会收到错误,而int?
或Nullable<int>
可以保留null
值,这就是您的第二个代码段有效的原因。
您可以使用as运算符执行某些类型的转换 在兼容的引用类型或可空类型之间
也来自同一doc link
as运算符就像一个强制转换操作。但是,如果转换 是不可能的,因为返回null而不是引发异常。