【发布时间】:2014-08-07 13:03:37
【问题描述】:
每个开发者都有自己的标准。一些开发者喜欢<type>.TryParse(),一些开发者喜欢使用(type)object; 投射,还有一些开发者喜欢使用关键字来代替。
我注意到'as' 运算符出现了问题 - 您不能使用它来执行不可为空的值类型之间的转换。我在 as 关键字上阅读了 MSDN 上的文档,他们还将其解释为“您可以使用 as 运算符在兼容的引用类型或可空类型之间执行某些类型的转换。”
我用以下方法对此进行了测试:
int i = 0;
var k = i as int; //Breaks
int i = 0;
var k = i as int?; //Works
决定as关键字以这种方式执行的原因是什么?
【问题讨论】:
-
"每个开发者都有自己的标准。有些开发者喜欢使用
.TryParse(),有些开发者喜欢使用 (type)object; 进行转换,有些开发者喜欢使用关键字来代替。”这适用于开发团队之外的开发人员。在团队中开发时,首先要达成共识的是通用编码标准。 -
不是所有的开发人员都在一个团队中工作。我从现在的位置独自工作,似乎这个代码库上的所有开发人员都有自己的风格和标准(其中一些让我眼花缭乱:))
-
as的目的是转换为特定类型如果值合适,否则评估为null值。请注意其中包含null。该描述根本不适用于不可为空的类型。 -
您不会因为偏好而使用不同的表单 - 您使用不同的表单是因为它们做不同的事情。例如,
as永远不会调用转换运算符。(type)object可以这样做。