GetType,typeof和is,用于处理null和转换

时间:2011-03-19 13:28:45

标签: c# .net

  

可能重复:
  Type Checking: typeof, GetType, or is?

以下内容之间有什么区别:

bool isLong (object a){
    return (a.GetType()==typeof(INT64));
}

bool isLong (object a){
    return (typeof(a)==typeof(INT64));
}

bool isLong (object a){
    return (a is INT64);
}

另外。有一个选项,a将为null。这些功能可以处理这种情况吗?

( 我需要将“值”转换为long?例如: c.CustomerId =(长?)值; )

我可以使用: 长? id =(a a long?)

1 个答案:

答案 0 :(得分:1)

第一个使用实例a,如果anull,则会抛出异常。它使用Type类比较类型。

第二种方式不起作用,因为typeof仅适用于类型名称,而不适用于实例。

最后一种方法是,a的类型为INT64。如果anull,则不会抛出异常。这是首选方法。

但是在你的情况下,你可以进行转换

c.CustomerId = value as long?;