如何检查一个对象是否是某种types的

我将各种对象传递给子例程来运行相同的过程,但每次使用不同的对象。 例如,在一种情况下,我使用的是ListView,而在另一种情况下,我正在传递一个DropDownList。

我想检查是否传递的对象是一个DropDownList然后执行一些代码,如果是。 我该怎么做呢?

我的代码到目前为止不起作用:

Sub FillCategories(ByVal Obj As Object) Dim cmd As New SqlCommand("sp_Resources_Categories", Conn) cmd.CommandType = CommandType.StoredProcedure Obj.DataSource = cmd.ExecuteReader If Obj Is System.Web.UI.WebControls.DropDownList Then End If Obj.DataBind() End Sub 

在VB.NET中,您需要使用GetType方法来检索对象实例的types,并使用GetType()运算符来检索另一个已知types的types。

一旦你有这两种types,你可以简单地使用Is运算符进行比较。

所以你的代码应该是这样写的:

 Sub FillCategories(ByVal Obj As Object) Dim cmd As New SqlCommand("sp_Resources_Categories", Conn) cmd.CommandType = CommandType.StoredProcedure Obj.DataSource = cmd.ExecuteReader If Obj.GetType() Is GetType(System.Web.UI.WebControls.DropDownList) Then End If Obj.DataBind() End Sub 

您也可以使用TypeOf运算符而不是GetType方法。 请注意,这将testing您的对象是否与给定的types兼容 ,而不是它是相同的types。 这看起来像这样:

 If TypeOf Obj Is System.Web.UI.WebControls.DropDownList Then End If 

完全微不足道,不相干的挑剔:传统上,编写.NET代码(VB.NET或C#)时,参数名称是camelCased(意思是它们总是以小写字母开头)。 这使得他们很容易区分类别,types,方法等。