如何检查一个对象是否是某种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,方法等。