ファイル出力の終わりのClose()をよく忘れる | プログラミングがわからなすぎる

プログラミングがわからなすぎる

気が向いた時の備忘録。プログラミングは好きなのに物凄く単純なものしか理解できないからメモしていくうちに覚えられたらいいな
ターゲットフレームワークは大体4.7.2

CSVなどのファイル出力や二重起動禁止にするMutexを使うときに

だいたい必ずCloseとかしなさいって言われるけど

そのちょっとがめんどくさい

 

普通にクローズ書いた処理 

using System;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace TestProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StreamWriter sw = new StreamWriter(@"C:\\tmp\\test.txt", 
                false, Encoding.GetEncoding("Shift-JIS"));
            sw.WriteLine("テスト出力");
            sw.Close();
        }
    }
}

 

ただ最後にClose()ってすればいいのだけど

処理中に例外が発生したらどうしようってなって

Close処理をfinallyに入れなきゃいけないこととかあると思います

ちょっとのそれが面倒(だけどクローズしなきゃおこられる)

 

これでよかった 

using System;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace TestProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (StreamWriter sw = new StreamWriter(@"C:\\tmp\\test.txt", 
                false, Encoding.GetEncoding("Shift-JIS")))
            {
                sw.WriteLine("テスト出力");
            }
        }
    }
}

 

usingを使えばCloseを書かなくても自動で開放されるみたいって教えてもらったので

今後はこれを多用していこうと思います