【发布时间】:2012-08-25 14:38:01
【问题描述】:
可能重复:
Casting vs using the 'as' keyword in the CLR
C#: “is” vs “as”
这段代码:
if (sheet.Models.Data is GroupDataModel)
{
GroupDataModel gdm = (GroupDataModel)sheet.Models.Data;
还有这段代码:
GroupDataModel gdm = sheet.Models.Data as GroupDataModel;
if (gdm != null)
{
你推荐以上两种风格中的任何一种吗?
【问题讨论】:
-
第一个。如果无法进行强制转换,第二个可能会抛出异常
-
定义“更好”——为了什么?表现?可读性?错误?还有什么?
-
第一个的优点是不会在程序中引入可能为空的符号
-
@AndreCalil - 类型询问将防止 InvalidCastException。但是,NullReferenceException is 在第一个选项中仍然可能,但不是第二个。
-
@KeithS:两者都可以抛出
NullReferenceException,因为sheet或sheet.Models可能为空。
标签: c# syntax casting operators