2013-02-14 70 views
1

我想确保参数变量的类型是Guid。在运行时知道类型变量

public ActionResult Edit(Guid id) 
{ 
    // if id != Guid print error 
} 

我想很基本的问题,但我卡在这里。

谢谢

+2

它还能是什么?如果有人试图通过除Guid之外的东西,它不会编译。 – 2013-02-14 21:11:31

+0

你可以通过'id!= Guid'解释一下你的意思 - 你是在谈论_type_还是具体的值? – Oded 2013-02-14 21:13:30

+0

@DStanley - 在这种情况下。但是对于非密封的参考类型,您可以传入子类型。 – Oded 2013-02-14 21:14:07

回答

4

在这种情况下,传入值不可能是而不是 GUID。

GUID structure是一个值类型 - 它不能被继承。这意味着只有编译器将接受作为该方法的参数是GUID

2

它总是会的。编译器确保它。

将参数写为Guid id意味着只能将Guid类型的实例或Guid的子类型传递给该方法。任何尝试传递任何其他类型的参数都会导致编译器错误或运行时异常(如果您试图通过反射调用该方法)。

正如其他人所指出的,Guid是一个struct并且不能有子类型。

0

正如其他人所说,你并不需要在这个特定的情况下,因为编译将确保它。

但是,一般来说,您会希望使用GetType()typeof来执行此检查。

if (id.GetType() != typeof(System.Guid)) 
{ 
    // Print Error 
} 
相关问题