C#CA2000スコープを失う前にオブジェクトを破棄する

シンロス

これは私のコードです。「newDataTable()...」と「newDataColumn()...」でCA2000が表示されます。

usersDS.Tables.Add(new DataTable()
{
    TableName = "Users",
    Columns = { new DataColumn() { ColumnName = "Handle", DataType = typeof(string) }, new DataColumn() { ColumnName = "Nickname" ,DataType = typeof(string) } }
});

変数を宣言せずに修正することは可能ですか?

ピーター・ドゥニホ

これは、グローバルキャッシュを使用する場合のCA2000 IDisposable C#コンパイラの警告を修正する方法とほぼ同じです。多分それその複製と見なされるべきです。よく分かりません。

コード分​​析はオブジェクトを破棄せずに、また別の場所に安全に保管せずにメソッドを完了することが理論的に可能であると正当に不満を述べていIDisposableます。後者は、DataTableオブジェクトの初期化中またはDataTableオブジェクトのオブジェクトへの追加中に例外が発生した場合に発生する可能性がありusersDS.Tableます(それが何であれ)。

ここで例外がスローれないことを保証できる場合は、CAの警告を抑制しても問題ありません。その場合、あなたはCAができる以上のことを知っており、あなたは自分が何をしているのかを知っていると約束しています。

保証ができない場合は、いいえ…ローカル変数を導入せずに警告を修正して、例外が発生した場合にオブジェクトを破棄できるようにすることはできません。例えば:

DataTable dataTable = null;
DataColumn dataColumn1 = null, dataColumn2 = null;

try
{
    dataColumn1 = new DataColumn() { ColumnName = "Handle", DataType = typeof(string) };
    dataColumn2 = new DataColumn() { ColumnName = "Nickname", DataType = typeof(string) };
    dataTable = new DataTable()
    {
        TableName = "Users",
        Columns = { dataColumn1, dataColumn2 }
    };
    usersDS.Tables.Add(dataTable);
}
catch
{
    if (dataTable != null)
    {
        dataTable.Dispose();
    }
    if (dataColumn1 != null)
    {
        dataColumn1.Dispose();
    }
    if (dataColumn2 != null)
    {
        dataColumn2.Dispose();
    }
    throw;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

「CA2000:スコープを失う前にオブジェクトを破棄する」Unityコンテナを構築する

分類Dev

これらのXmlDataSourceオブジェクトの両方で.Dispose()を呼び出す必要がありますか?「CA2000スコープを失う前にオブジェクトを破棄する」は、.Dispose()を実行するように指示します。

分類Dev

オブジェクトの破棄に関する変数のスコープを管理する

分類Dev

オブジェクトを破棄するときにタイプの名前を変更して追加する

分類Dev

同じ名前のオブジェクト/キーを破棄する

分類Dev

C ++のコンストラクターで例外がスローされたときに、オブジェクトのメンバー変数を破棄する

分類Dev

Inno SetupPascalスクリプトでオブジェクトを破棄する

分類Dev

C#の静的クラスからアンマネージドオブジェクトを破棄するにはどうすればよいですか?

分類Dev

C ++オブジェクトを返すときのコピーと破棄

分類Dev

C#でオブジェクトを破棄する

分類Dev

C ++でオブジェクトを破棄する方法

分類Dev

オブジェクトはデータを使用する前に破棄します

分類Dev

Unity3d:クリックで新しいゲームオブジェクトを生成する前に子オブジェクトを破棄します

分類Dev

ループ内のオブジェクトを作成および破棄する

分類Dev

スレッドが破棄される前にオブジェクトを離れるように強制する

分類Dev

名前のないJavaでオブジェクトを破棄する方法は?

分類Dev

C#でサードパーティオブジェクト(TelegramBotClient)を適切に破棄する方法

分類Dev

オブジェクトのポインタをコンストラクタに提供すると、オブジェクトが破棄されます

分類Dev

関数の期待される引数インターフェイスに一致するようにオブジェクトを破棄する

分類Dev

Ninjectにリクエストスコープ内のオブジェクトを破棄させることができません

分類Dev

スプリングブートで使用するたびにBeanオブジェクトの状態を破棄またはクリアする方法

分類Dev

スコープ外になったときにunique_ptrがオブジェクトをすぐに破棄しないのはなぜですか?

分類Dev

オブジェクトを破棄する前にアップロードリクエストをキャンセルすると、mobx-state-treeがスローされます[デッド]エラーを変更できません

分類Dev

プロセス間共有メモリ削除オブジェクトを破棄せずにブーストする

分類Dev

リクエストオブジェクトの破棄を制御するためのオプション

分類Dev

(オブジェクトをコピーして破棄せずに)C ++でインプレースメンバー構築を行う方法はありますか?

分類Dev

スライダーを使用してオブジェクトを作成および破棄するにはどうすればよいですか?

分類Dev

内部オブジェクトを取得するためにjavascriptオブジェクトを破棄する

分類Dev

別のクラスのオブジェクトを破棄する方法

Related 関連記事

  1. 1

    「CA2000:スコープを失う前にオブジェクトを破棄する」Unityコンテナを構築する

  2. 2

    これらのXmlDataSourceオブジェクトの両方で.Dispose()を呼び出す必要がありますか?「CA2000スコープを失う前にオブジェクトを破棄する」は、.Dispose()を実行するように指示します。

  3. 3

    オブジェクトの破棄に関する変数のスコープを管理する

  4. 4

    オブジェクトを破棄するときにタイプの名前を変更して追加する

  5. 5

    同じ名前のオブジェクト/キーを破棄する

  6. 6

    C ++のコンストラクターで例外がスローされたときに、オブジェクトのメンバー変数を破棄する

  7. 7

    Inno SetupPascalスクリプトでオブジェクトを破棄する

  8. 8

    C#の静的クラスからアンマネージドオブジェクトを破棄するにはどうすればよいですか?

  9. 9

    C ++オブジェクトを返すときのコピーと破棄

  10. 10

    C#でオブジェクトを破棄する

  11. 11

    C ++でオブジェクトを破棄する方法

  12. 12

    オブジェクトはデータを使用する前に破棄します

  13. 13

    Unity3d:クリックで新しいゲームオブジェクトを生成する前に子オブジェクトを破棄します

  14. 14

    ループ内のオブジェクトを作成および破棄する

  15. 15

    スレッドが破棄される前にオブジェクトを離れるように強制する

  16. 16

    名前のないJavaでオブジェクトを破棄する方法は?

  17. 17

    C#でサードパーティオブジェクト(TelegramBotClient)を適切に破棄する方法

  18. 18

    オブジェクトのポインタをコンストラクタに提供すると、オブジェクトが破棄されます

  19. 19

    関数の期待される引数インターフェイスに一致するようにオブジェクトを破棄する

  20. 20

    Ninjectにリクエストスコープ内のオブジェクトを破棄させることができません

  21. 21

    スプリングブートで使用するたびにBeanオブジェクトの状態を破棄またはクリアする方法

  22. 22

    スコープ外になったときにunique_ptrがオブジェクトをすぐに破棄しないのはなぜですか?

  23. 23

    オブジェクトを破棄する前にアップロードリクエストをキャンセルすると、mobx-state-treeがスローされます[デッド]エラーを変更できません

  24. 24

    プロセス間共有メモリ削除オブジェクトを破棄せずにブーストする

  25. 25

    リクエストオブジェクトの破棄を制御するためのオプション

  26. 26

    (オブジェクトをコピーして破棄せずに)C ++でインプレースメンバー構築を行う方法はありますか?

  27. 27

    スライダーを使用してオブジェクトを作成および破棄するにはどうすればよいですか?

  28. 28

    内部オブジェクトを取得するためにjavascriptオブジェクトを破棄する

  29. 29

    別のクラスのオブジェクトを破棄する方法

ホットタグ

アーカイブ