投稿者 ポムNNN  (社会人) 投稿日時 2018/2/4 23:16:46
開発環境 Visual Studio 2015, Windows7(64bit)
StreamWriter クラスの Close メソッドの部分で下記プログラムの Write1(), Write2() の2つのうちどちらがいいいのか迷っています。

Write1() はStreamWriterクラスを使用する直前でインスタンス化するプログラムです。
Write2() はStreamWriterクラスを最初にインスタンス化するプログラムです。

個人的には Write1() がいいかと思っています。
理由としては、第46回クラス作成の中で
 
”クラスの生成というのは効率が悪い作業の1つなのです。プログラム中ではできるだけクラスを生成する回数を減らすようにするように努力してください。”

と記載があるからです。今回の場合はインスタンス化の前段階で例外が発生し、インスタンス化が無駄だと思ったからです。
どなたかアドバイス頂けませんでしょうか?よろしくお願いします。

  Private Sub Write1()

        Dim i As Integer = 0
        Dim n As Integer = 0
        Dim j As Integer
        Dim sw As StreamWriter = Nothing
        Dim FilePath = "" 'ファイルのフルパスを入れる

        Try
            j = i / n
            sw = New StreamWriter(FilePath, True, System.Text.Encoding.GetEncoding("shift-jis"))
            sw.WriteLine(j)

        Catch ex As Exception
            MsgBox(ex.Message)
        Finally

            If Not sw Is Nothing Then
                sw.Close()
            End If

        End Try
    End Sub

///////////////////////////////////////////////////////////////
    
Private Sub Write2()

        Dim i As Integer = 0
        Dim n As Integer = 0
        Dim j As Integer
        Dim FilePath = "" 'ファイルのフルパスを入れる
        Dim sw As StreamWriter = New StreamWriter(FilePath, True, System.Text.Encoding.GetEncoding("shift-jis"))

        Try
            j = i / n
            sw.WriteLine(j)

        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            sw.Close()
        End Try
    End Sub