2

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

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

上面的示例显然无法编译,因为double它们string不是 type 的对象Type,它们甚至不是合法的 C# 表达式。

如何表达Type某种 C# 类型的 a?

4

3 回答 3

6

使用 typeof 获取和比较类型。

aMethod.ReturnType == typeof(double)

aString.GetType() == typeof(string)
于 2012-12-10T07:27:50.030 回答
2

使用运算符

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

bool result1 = aMethod.ReturnType 是双精度;

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
于 2012-12-10T07:26:52.577 回答
0

正如其他人所说,使用typeof(YourType)is运算符(小心,is不是严格的运算符(考虑继承):例如,MyClass is object是真的!)..

我不知道你为什么需要aMethod.ReturnType,但似乎你需要泛型参数。试试看 !

于 2012-12-10T08:29:46.417 回答