2016-11-19 14 views
6

.NET Framework 1.1を使用しています。以前は.netフレームワークでは、Close()FileStreamに、しかし、.netコア1.1のFileStreamクラスにはCloseメソッドがありません。Dispose()が見つかりましたが、同等かどうかわかりません。誰でも気をつけて、.netコアの新しいFileStream/StreamWriterクラスを正しく閉じる正しい方法を教えてください。.NET Core 1.1のFileStream/StreamWriterにはClose()メソッドがありません。

+3

彼らは.NETCoreを使用して、うまく設計されていないフルフレームワークの設計上の決定を修正しました。 Streamクラスの場合とまったく同じことを行う2つのメソッドDisposeとCloseがあります。紙の上でのサウンドデザインは、どちらが「より良い」ものかを決めることができない多くのプログラマにとって困惑しています。 –

+0

Hansが述べたように、代わりに安全に 'Dispose'を使うことができます。ディスカッションを終了するには、以下の回答を受け入れてください。マイクロソフト社は、今後.NET標準2.0に「Close」を追加した。これは.NET Core 1.2の一部でなければならない。 –

答えて

5

IDisposableを実装すると、暗黙的にDispose()メソッドを呼び出してストリームを閉じるusingステートメントを使用できることを意味します。

使用

using (StreamWriter sw = new StreamWriter(path)) 
{ 
    // your logic here 
} // here Dispose() is called implicitly and the stream is closed 
0

使用usingまたはDispose Patternあなた自身を構築します。

using (StreamWriter sw = new StreamWriter(path) 
{ 

} 
0

この問題では、レガシーコードをそのまま維持しようとすると、別の方法として、拡張メソッドを記述することがあります。

public static class FileStreamExtension 
{ 
    public static void Close(this FileStream reader) 
    { 
     reader.Dispose(); 
    } 
} 
関連する問題