关于c#:GetType,typeof和is,用于处理null和转换

GetType, typeof and is, to handle null and conversion

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Type Checking: typeof, GetType, or is?

以下两者有什么区别:

1
2
3
4
5
6
7
8
9
10
11
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.客户ID=(长?)价值;)

我可以使用:长?ID =(A长)?


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

第二种方法不起作用,因为typeof只使用类型名,而不使用实例。

最后,你是说aINT64类型。如果anull,则不会引发异常。这是首选方法。

然而,在您的情况下,您可以做的转换

1
c.CustomerId = value as long?;