GetType、typeof 和 is,处理 null 和转换 [重复]
Posted
技术标签:
【中文标题】GetType、typeof 和 is,处理 null 和转换 [重复]【英文标题】:GetType, typeof and is, to handle null and conversion [duplicate] 【发布时间】: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 的问题。请看问题。 嗯,你有没有在测试项目中尝试过,看看行为是什么? 【参考方案1】:第一个使用实例a
,如果a
是null
,则会抛出异常。它使用Type
类比较类型。
第二种方法行不通,因为typeof
仅适用于类型名称,不适用于实例。
在最后一种方式中,您说a
是INT64
类型。如果a
是null
,它不会抛出异常。这是首选方法。
但是在你的情况下,你可以做的转换
c.CustomerId = value as long?;
【讨论】:
我可以使用:long 吗? id=(a as long?)?is
总是返回false
为null
。
绝对 - 如果它无法进行转换,它会将 null
粘贴到 id
中。以上是关于GetType、typeof 和 is,处理 null 和转换 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
比较对象类型时 typeof 和 is 有啥区别? [复制]