为什么会收到虚假警告CA2202?

时间:2019-04-12 15:02:42

标签: vb.net dispose

下面的最小程序给出一个CA2202警告:在方法PList.GetEnumerator()中,对象Module1.Main()可以被多次处置。 [这是从警告消息中剪切并粘贴的] /

如果将“列表”内容更改为“整数”,则警告消失。如果取出周围的Do循环,它也会消失。

我正在Windows 7上使用Visual Studio Community 2017。

Module Module1

  Sub Main()

    Dim KVP As KeyValuePair(Of Integer, List(Of Object))
    Dim PList As New SortedList(Of Integer, List(Of Object))

    Do While True
      For Each KVP In PList

      Next KVP
    Loop

  End Sub

End Module

我总是可以忽略该警告,但是我对为什么这样一个简单的程序可以产生警告很感兴趣。这里有什么想法的专家吗?

1 个答案:

答案 0 :(得分:0)

正如@TnTimMn所指出的,这是一个虚拟副本。该警告似乎是错误的肯定。谢谢大家的宝贵意见。