表示C#中某些类型的对象

时间:2012-12-10 07:25:37

标签: c# .net reflection

我想做出与以下类似的断言:

aMethod.ReturnType == double
aString.GetType() == string

以上示例显然无法编译,因为doublestring不是Type类型的对象,它们甚至不是合法的C#表达式。

如何表达某个C#类型的Type

3 个答案:

答案 0 :(得分:6)

使用typeof获取和比较类型。

aMethod.ReturnType == typeof(double)

aString.GetType() == typeof(string)

答案 1 :(得分:2)

使用is运算符

  

检查对象是否与给定类型兼容。

bool result1 = aMethod.ReturnType为double;

bool result2 = aString is string;

请考虑以下示例:

bool result1 = "test" is string;//returns true;
bool result2 = 2 is double; //returns false
bool result3 = 2d is double; // returns true;

编辑:我错过了aMethod.ReturnType类型不是值,因此您最好使用typeof

进行检查
bool result1 = typeof(aMethod.ReturnType) == double;

考虑以下示例。

object d = 10d;
bool result4 = d.GetType() == typeof(double);// returns true

答案 2 :(得分:0)

正如其他人所说,使用typeof(YourType)is运算符(请注意,is不是严格的运算符(考虑继承):例如,{{1是真的!)..

我不知道你为什么需要MyClass is object,但似乎你需要generic parameters。试试看 !