Option strict 不允许对数组进行后期绑定
Option strict disallows late binding for Array
能否请您帮助解决上述问题。
你几乎不应该将某些东西声明为 Array
类型。如果您要创建 String
数组,则声明:
Dim itemNames As String() = System.Enum.GetNames(GetType(Configuration.eSystemType))
当然,鉴于 Enum.GetNames
的 return 类型为 String()
,您可以只使用类型推断:
Dim itemNames = Enum.GetNames(GetType(Configuration.eSystemType))
我还删除了多余的 System
命名空间限定符。
也许您被 Enum.GetValues
声明为类型 Array
这一事实所愚弄。我确实说过 "pretty much never"。在极少数情况下需要这样做,但作为应用程序开发人员,您几乎肯定永远不必这样做。数组 returned 是您指定的类型,因此您应该转换为该类型:
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())
能否请您帮助解决上述问题。
你几乎不应该将某些东西声明为 Array
类型。如果您要创建 String
数组,则声明:
Dim itemNames As String() = System.Enum.GetNames(GetType(Configuration.eSystemType))
当然,鉴于 Enum.GetNames
的 return 类型为 String()
,您可以只使用类型推断:
Dim itemNames = Enum.GetNames(GetType(Configuration.eSystemType))
我还删除了多余的 System
命名空间限定符。
也许您被 Enum.GetValues
声明为类型 Array
这一事实所愚弄。我确实说过 "pretty much never"。在极少数情况下需要这样做,但作为应用程序开发人员,您几乎肯定永远不必这样做。数组 returned 是您指定的类型,因此您应该转换为该类型:
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())