Dot-Net
如何檢查對像是否為某種類型
我將各種對像傳遞給子常式以執行相同的程序,但每次都使用不同的對象。例如,在一種情況下,我使用 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方法來檢索對象實例的類型,並使用GetType()運算符來檢索另一個已知類型的類型。擁有這兩種類型後,您可以使用
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方法。請注意,這會測試您的對像是否與給定類型兼容,而不是測試它是否是同一類型。看起來像這樣:If TypeOf Obj Is System.Web.UI.WebControls.DropDownList Then End If*完全無關緊要的吹毛求疵:*傳統上,在編寫 .NET 程式碼(VB.NET 或 C#)時,參數的名稱是駝峰式(這意味著它們總是以小寫字母開頭)。這使它們一目了然地與類、類型、方法等區分開來。