【发布时间】:2018-08-15 19:24:03
【问题描述】:
我正在审核我们的许多申请。一个应用程序返回了相当多的 null 尊重问题。值得一提的是,我对 VB.NET 很陌生,所以请耐心等待我可能会用我的代码传递的任何问题。
Public Sub SomeMethod()
Try
PerformLog("Entering SomeMethod")
Dim intTemp As Short
Erase gstrFieldWhatever //Defined earlier: Public gstrFieldWhatever() As String
...
intTemp = intTemp + 1
ReDim Preserve gstrFieldWhatever(intTemp)
gstrFieldWhatever(intTemp) = "Z*L-"
分析器(在本例中为 Fortify)报告Erase gstrFieldWhatever 将在我们稍后尝试在gstrFieldWhatever(intTemp) = "Z*L-" 调用它时导致潜在的空异常。但是,我们使用ReDim Preserve gstrFieldWhatever(intTemp) 应该创建一个新数组。如果是这种情况,为什么分析器会指出潜在的 null 取消引用问题?
【问题讨论】:
-
Erase关键字是 VB6 时代的遗留物,它可以使旧代码的移植更容易。这不是.Net 中的好习惯。与ReDim Preserve相同。在大多数情况下,这意味着您应该拥有一个集合而不是数组。 -
@JoelCoehoorn 啊...有没有更好的方法来执行与 Erase 关键字类似的操作?我问错问题了吗(我应该问如何使用集合)?
-
VB.Net 通常只重新声明数组(不带
Preserve),或者——甚至更好——使用List(Of String)并将其称为.Clear()方法。
标签: vb.net