.net - 如何检查一个对象是否属于某种类型

标签 .net vb.net object drop-down-menu object-type

我将各种对象传递给子例程以运行相同的进程,但每次都使用不同的对象。例如,在一种情况下我使用 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 method检索对象实例的类型,以及 GetType() operator检索另一个已知类型的类型。

一旦获得了两种类型,您就可以使用 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 operator而不是 GetType 方法。请注意,这测试您的对象是否与给定类型兼容,而不是它们是同一类型。看起来像这样:

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

End If
<小时/>

完全微不足道、无关紧要的挑剔:传统上,在编写 .NET 代码(VB.NET 或 C#)时,参数名称采用驼峰命名法(这意味着它们始终以小写字母开头) 。这使得它们一眼就能与类、类型、方法等区分开来。

关于.net - 如何检查一个对象是否属于某种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580044/

相关文章:

c# - 如何从两个 List<string> 中获取不同的值?

c# - 将 "myself"从 C# 转换为 VB.NET

oop - 如何从 Tcl 的父类(super class)中访问派生类的成员变量?

c++ - 使用变量销毁对象(释放内存)

c# - 如何使用 TcpChannel 配置对远程服务器的并发请求限制

c# - 如果用户定义函数的静态调用顺序违反了一些规则,让编译器提示

c# - WebClient:忽略 HTTP 500

vb.net - 为自定义控件创建有效属性值的下拉列表

vb.net - 使用 VB.net 发送电子邮件

javascript - 极其烦人的 JavaScript 数组/对象错误