2008年01月17日
川俣晶の縁側ソフトウェア技術雑記total 9813 count

デリゲートを使って行うC# 3.0におけるusingよりももっと冴えた確実なリソース開放の書き方?

Written By: 川俣 晶連絡先

 久々に、スムーズにコードが書けるコンディションが戻ってきた感じです。

 やはり、気持ち良くコードが書けると、気分も晴れやかです。

 というわけで、ふと思い付いたこと。

C#の素晴らしいusing文 §

 C#のusing文を使うと確実なリソースの開放(ファイルのクローズ等)を容易に記述できます。

 try-finally構文よりもずっと優れています。

using (TextWriter writer = File.CreateText(@"s:\delme1.txt"))

{

    writer.WriteLine("やっほー");

}

 しかし、using文を書かなければどうにもなりません。

デリゲートを使った改善 §

 C# 3.0時代なら、こんなラッパメソッドを用意して。

public class TextFileWriteWrapper

{

    public static void WriteFile( string filenane,

                                 Action<TextWriter> invoker )

    {

        using (TextWriter writer = File.CreateText(filenane))

        {

            invoker(writer);

        }

    }

}

 これを使って、以下のような感じに書いても良いかなと。

TextFileWriteWrapper.WriteFile(@"s:\delme2.txt",writer => {

    writer.WriteLine("やっほー");

});

 これなら、メソッドさえ呼び出していればクローズは確実。using忘れはあり得ないわけです。

 しかも、File.WriteAllLinesのような配列を準備する手間も要りません。

 その上、タイプする文字数も減ります。このままでも短いですが、名前を工夫すればもっと短くて良いでしょう。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2008年
01月
19日
freebsd-updateでFreeBSDのマイナーバージョンアップを行う際のメモ
3days 0 count
total 4218 count
【技術雑記】の前のコンテンツ
2008年
01月
05日
Vista Sidebar GadgetのSystem.Shell.ItemオブジェクトでZIPフォルダを処理させない方法
3days 0 count
total 2968 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20080117175135
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.