【问题标题】:vb.net, option strict, enums and overriding ToStringvb.net,选项严格,枚举和覆盖 ToString
【发布时间】:2009-02-13 15:25:13
【问题描述】:

我有以下代码:

Public Enum Country
   Canada = 1
   USA = 2
End Enum

当我想查看用户是否选择了一个值时,我会这样做:

ddl.SelectedValue = Country.Canada

效果很好。但是,如果我打开隐式转换的警告,则会发出警告。改成

ddl.SelectedValue = Country.Canada.ToString()

失败,因为 ToString() 方法返回“Canada”而不是“1”。

消除警告的最佳方法是什么?

【问题讨论】:

    标签: asp.net vb.net enums


    【解决方案1】:

    您可以将 SelectedValue 显式转换为 int,或将 Country 转换为字符串。

    If CInt(ddl.SelectedValue) = Country.Canada
    

    或

    If ddl.SelectedValue = CStr(Country.Canada)
    

    如果您选择第一个选项,您可能需要将您的枚举显式声明为整数

    Public Enum Country As Integer
    

    出现警告是因为 SelectedValue 是一个字符串,而 Country 是一个整数,所以会发生隐式转换 - 就像它说的那样!!

    【讨论】:

      【解决方案2】:

      如果您想要值 '1' 而不是 'Canada',您可以显式先将其转换为整数,然后根据结果调用 .ToString()。

      ddl.SelectedValue = DirectCast(Country.Canada, Integer).ToString()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 2010-09-19
        • 2017-02-11
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多