1

もともと、このメソッドは、タイプに関係なく、何らかの問題が発生した場合にのみfalseを返します。using例外の場合、ステートメントを適用するとロジックが壊れるのではないかと思っています

この方法で using ステートメントから真の値を返すことは問題ありませんか?

    try
    {

        Measurements.DeleteAllMeasurements(ID);
        string query = "DELETE FROM `Narz` WHERE `NAZk_1_ID`=@NAZ_ID";
        using(OleDbConnection strukturaConnection = new OleDbConnection(CommonConnectionString + DbPath + strStructureMdb))
            {
                using (OleDbCommand command = new OleDbCommand(query, strukturaConnection);)
                    {

                        command.Parameters.Add("@NAZ_ID", OleDbType.Numeric, 50);
                        command.Parameters["@NAZ_ID"].Value = ID;
                        command.ExecuteNonQuery();
                        return true; 
                    } 
            }
    }
    catch (Exception ex)
    {
        Logger.LogError(ex);
        return false;
    }

または、別の方法でfalseを返す必要がありますか?

4

3 に答える 3

5

IDisposable.Dispose()usingステートメントが行うのは、コードブロックの最後で インスタンスの実装を暗黙的に呼び出すことだけです。

参照を返し、Dispose()メソッドがたまたまそれを操作しない限り、2つの懸念は完全に無関係です。

つまり、usingステートメント内からどの値を返すかは重要ではありません。

編集:あなたのメソッドが「返すべき」ものについて:これを知るのに十分な情報がありません。メソッドの名前すらわかりません。また、このメソッドがアプリケーションの他のどのオブジェクトまたは側面で使用されるかはわかりません。戻り値は、呼び出し元にとって意味があり、操作の結果を効果的に伝達する必要があります。

于 2012-06-06T11:17:28.240 に答える
1

代わりに、メソッドの作成時に bool 値を作成します。内部でその値を true に設定し、catch でその値を false に設定します。外部の catch はその変数値を返します。

を使用しても、コードや私のコードには影響しません。IDisposable.Dispose()暗黙的に呼び出すためだけです。

于 2012-06-06T11:19:48.380 に答える
0

それは問題ありません - そのすべてのことは、using ステートメントの括弧内で IDisposable オブジェクトの dispose メソッドを呼び出すことです

于 2012-06-06T11:18:36.937 に答える