我有这样的代码:
if(expression.GetType() == typeof(BinaryExpression))
{
//DO something
}
表达式是一个MethodBinaryExpression(执行Console.WriteLines(expression.GetType().ToString()
表示如此)。但是,代码永远不会进入if-block。 MethodBinaryExpression
是SimpleBinaryExpression
的子类,它是BinaryExpression
的子类。是什么给了什么?
答案 0 :(得分:2)
将测试更改为:
if(expression is BinaryExpression)
{
//DO something
}
即使MethodBinaryExpression继承自BinaryExpression,它们仍然是不同的类型。您可以尝试一些示例来查看Type对象的比较:
// Prints "False"
Console.WriteLine(typeof(MethodBinaryExpression) == typeof(BinaryExpression));
// Prints "True"
Console.WriteLine(typeof(BinaryExpression) == typeof(BinaryExpression));