1

usingステートメントは何をしますか?それは実際に必要ですか?

    using (MyWebservice x = new MyWebservice())
    {
    //random code
    }
4

4 に答える 4

3

http://msdn.microsoft.com/en-us/library/yh598w02.aspx

usingステートメントは、オブジェクトのメソッドの呼び出し中に例外が発生した場合でも、Disposeが呼び出されるようにします。オブジェクトをtryブロック内に配置し、finallyブロックでDisposeを呼び出すことで、同じ結果を得ることができます。実際、これはusingステートメントがコンパイラーによって変換される方法です。

于 2010-02-11T19:31:06.103 に答える
1

いいえ、必要ありません。私たちのWebサービスの専門家は、あなたが注意を払っていることを確認するためだけにそれを使用します。

于 2010-02-11T19:31:37.587 に答える
1

ディスポーザブルパターンシンタックスシュガーです。コンパイルすると、生成されたILコードの完全なパターンに展開されます。

内で初期化したオブジェクトは、スコープ外になると呼び出されるメソッド()を取得します。Disposeこれが、実装するクラスだけがそれを使用できる理由IDisposableです。

それについてはMSDNの記事を参照してください。

于 2010-02-11T19:32:16.100 に答える
0

「usingステートメントは何をしますか?」という質問に答えるusingために、他の回答で参照されている廃棄を確実にするためのステートメントのより一般的な使用法を示すいくつかの例を次に示します。

StringWriterとXmlTextWriterは、使用が終了したときに破棄(クローズ)されていることを確認してください。

using (StringWriter sw = new StringWriter(sb))
        using (XmlTextWriter xw = new XmlTextWriter(sw))
        {
            WebPartManager1.ExportWebPart(partToExport, xw);  
        }

データベース接続とコマンドオブジェクトの両方が破棄されていることを確認します。

DataTable dt = new DataTable();

using (SqlConnection connection = new SqlConnection("ConnectionString"))
using (SqlCommand command = new SqlCommand())
{
    command.Connection = connection;
    command.CommandText = "SELECT * FROM Customers";

connection.Open();
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
    dt.Load(reader);
}
}
于 2010-02-11T19:41:58.100 に答える