检查类型是否匹配可空和非可空版本

时间:2016-06-20 14:22:15

标签: c# .net-4.5

我必须检查对象是否属于某种类型。 ATM我正在使用以下:

public void render(Graphics g) { switch(objState) { case Static: g.setColor(Color.black); g.fillRect(50, 50, width, height); //g.drawImage(staticimg, x, y, null); break; case WalkRight: g.setColor(Color.white); g.fillRect(x, y, width, height); //g.drawImage(walkright, x, y, null); break; case WalkLeft: g.setColor(Color.cyan); g.fillRect(x, y, width, height); //g.drawImage(walkleft, x, y, null); break; case Stop: g.setColor(Color.green); g.fillRect(x, y, width, height); //g.drawImage(stop, x, y, null); break; default: break; } }

哪个很长,'笨重'。 是否有一些内置的解决方案可以检查两者?

2 个答案:

答案 0 :(得分:3)

这个怎么样:

(Nullable.GetUnderlyingType(columnLambda.Type) ?? columnLambda.Type) == typeof(Guid)

(Nullable.GetUnderlyingType(columnLambda.Type) ?? columnLambda.Type).Name == "Guid"

当然,如果你想检查在编译时已知的具体值类型,你可以简单地用@Lee回答中的反射来做。

答案 1 :(得分:1)

您可以直接匹配类型,而不是通过名称匹配:

columnLambda.Type == typeof(Guid) || columnLambda.Type == typeof(Guid?)