C#のusing文のサンプルです。インスタンスを自動で破棄します。
目次
サンプル | インスタンスを自動で破棄するusing文 |
usingディレクティブ |
インスタンスを自動で破棄するusing文
using (StreamReaderクラス等のインスタンス) { } |
- using文は、配下のブロック({})を抜けるときにかっこ内のインスタンスを自動で破棄します。
- finally句でインスタンスを破棄するdisposeメソッドが不要になります。
- 対象は、IDisposableインターフェースを実装したクラスです。
- 以下は、Microsoftのusing ステートメントのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement
using文を使用した場合
using文を使用してファイルを読み込むサンプルです。
using System;
using System.IO;
class Test1
{
static void Main()
{
var path1 = @"d:\test1\test1.txt";
try
{
using (StreamReader sr = new StreamReader(path1,
System.Text.Encoding.GetEncoding("shift_jis")))
{
while (sr.EndOfStream == false)
{
Console.WriteLine(sr.ReadLine());
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
10,11行目は、using文でStreamReaderクラスでファイルを読み込んでいます。disposeメソッドが不要です。
using文を使用しない場合
using文を使用しないでファイルを読み込むサンプルです。
using System;
using System.IO;
class Test1
{
static void Main()
{
var path1 = @"d:\test1\test1.txt";
StreamReader file = null;
try
{
file = new StreamReader(path1,
System.Text.Encoding.GetEncoding("shift_jis"));
{
while (file.EndOfStream == false)
{
Console.WriteLine(file.ReadLine());
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
file.Dispose();
}
}
}
26行目にファイルを閉じるdisposeメソッドがあります。
usingディレクティブ
using System;
上記1行目は、usingディレクティブです。
System.Console.WriteLineのSystemを省略するものでusing文とは異なります。
関連の記事