【问题标题】:GetType, typeof and is, to handle null and conversion [duplicate]GetType、typeof 和 is,处理 null 和转换 [重复]
【发布时间】:2011-07-18 18:07:29
【问题描述】:

可能重复:
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 将为空。这些函数可以处理这种情况吗?

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

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

【问题讨论】:

  • 你在发这个之前搜索过吗?
  • @thecoop:我添加了一个关于 null 的问题。请看问题。
  • 嗯,你有没有在测试项目中尝试过,看看行为是什么?

标签: c# .net


【解决方案1】:

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

第二种方法行不通,因为typeof 仅适用于类型名称,不适用于实例。

在最后一种方式中,您说aINT64 类型。如果anull,它不会抛出异常。这是首选方法。

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

c.CustomerId = value as long?;

【讨论】:

  • 我可以使用:long 吗? id=(a as long?)?
  • is 总是返回falsenull
  • 绝对 - 如果它无法进行转换,它会将 null 粘贴到 id 中。
猜你喜欢
  • 2010-11-02
  • 2011-07-20
  • 2015-03-02
  • 2011-05-31
  • 2012-07-03
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多