【问题标题】:Option strict disallows late binding for Array [closed]选项严格禁止对 Array 进行后期绑定 [关闭]
【发布时间】:2018-08-22 07:47:04
【问题描述】:


能否请您帮忙解决上述问题。

【问题讨论】:

  • 感谢您通过发布您的代码图片而不是实际代码,让我的生活变得更加困难。我向上滚动以复制您的代码以发布到我的答案中,但我不能,因为您没有发布代码。不要发布代码或错误的图片。它们是文本。贴出文字。如果屏幕截图可以提供额外的清晰度,请发布额外的屏幕截图。切勿单独发布屏幕截图。
  • 另外,你做什么取决于你,但在 Enum 类型名称前加上“e”是没有意义和愚蠢的。无论如何,匈牙利符号现在毫无意义,并且从一开始就没有打算扩展到类似的东西。在使用 .NET Framework 中的 Enum 时,您是否突然感到困惑,因为它们没有该前缀?如果你可以使用那些没有前缀的类型,为什么你自己的类型需要一个?

标签: vb.net option-strict


【解决方案1】:

您几乎不应该将某些东西声明为Array 类型。如果您要创建 String 数组,请声明:

Dim itemNames As String() = System.Enum.GetNames(GetType(Configuration.eSystemType))

当然,鉴于Enum.GetNames 的返回类型为String(),您可以只使用类型推断:

Dim itemNames = Enum.GetNames(GetType(Configuration.eSystemType))

我还在那里删除了多余的 System 命名空间限定符。

您可能被Enum.GetValues 声明为Array 类型这一事实愚弄了。我确实说过“几乎从来没有”。在极少数情况下需要它,但作为应用程序开发人员,您几乎可以肯定永远不必这样做。返回的数组是您指定的类型,因此您应该转换为该类型:

Dim itemValues = DirectCast(Enum.GetValues(GetType(Configuration.eSystemType)),
                            Configuration.eSystemType())

ListItem 构造函数仍然需要两个 String 参数,因此您仍然需要将 Configuration.eSystemType 值转换为 Strings

Dim item As New ListItem(itemNames(i), itemValues(i).ToString())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多