1

Microsoft コード分析 (CA:XXXXX) に従って、すべてのプロジェクト警告を修正しようとしています。

警告の 1 つは、「CA2000: スコープを失う前にオブジェクトを破棄する」です。

私のコードは次のとおりです。

Private sub Foo()
   Dim O As New Form1()
   O.Show()
End Sub

Visual Studio は、オブジェクト O は使い捨てではないと言っています。そのような状況では、オブジェクト O が失われるため、キーワード USING を使用できませんEnd Using

Private sub Foo()
   Using O As New Form1()
      O.Show()  'The form will open then close !!!
   End Using
End Sub

フォームが開いて閉じます

そんな状況でCA2000に乗るにはどうすればいいのか、無視するのはもったいない、解決・修正したい。

ありがとう。

4

2 に答える 2

1

無視する必要はありません、解決して修正したいのです。

これは、この特定の例では、事実上、誤った警告です。この特定のケースでは、このメッセージを「解決して修正」したくありません。これは、オブジェクトをローカル スコープの末尾を超えて「存続」させたいためです。

Disposeこの場合、そのスコープ内のオブジェクトを呼び出すと、(常に) フォームを閉じます。

于 2012-05-18T18:50:16.397 に答える
0

どうShowDialogですか?

Private sub Foo()
   Using O As New Form1()
      O.ShowDialog()
   End Using
End Sub

Form1i が閉じられた後、すべてのリソースを破棄します。

于 2012-05-23T06:23:20.347 に答える