选项严格禁止对阵列进行后期绑定

时间:2018-08-22 07:47:05

标签: vb.net option-strict

enter image description here
您能帮忙解决以上问题吗?

1 个答案:

答案 0 :(得分: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())