0

クラスにメソッドを作成し、同じクラス内の別のメソッドからストリームリーダー sr1 にアクセスしたいのですが、メソッドにアクセスできないようです!

public void showSelectedFile() 
    { 
        StreamReader sr1 = new StreamReader(File.OpenRead(ReturnTxt));
        ReturnContenctRD = sr1.ReadToEnd();
    }
public void DisposeSR1() 
    { 

    }

他の関数からこれらのメソッドにアクセス/変更する方法を誰かに説明してもらえますか?

4

2 に答える 2

3

sr1showSelectedFile()メソッドに対してローカルです。メソッドが戻ると範囲外になります。他のメソッドから見えるようにしたい場合は、クラスのメンバーにする必要があります。

StreamReader sr1;

public void showSelectedFile() 
{ 
     sr1 = new StreamReader(File.OpenRead(ReturnTxt))
     ReturnContenctRD = sr1.ReadToEnd();
}

public void DisposeSR1() 
{ 

}

適切に破棄するだけの場合は、usingステートメントでラップします。

public void showSelectedFile() 
{ 
     using (StreamReader sr1 = new StreamReader(File.OpenRead(ReturnTxt)))
     {
         ReturnContenctRD = sr1.ReadToEnd();
     }
}
于 2013-03-27T00:07:23.637 に答える
0

StreamReader をクラスメンバー変数に格納する必要があります

例えば

class YourClass
{
    private StreamReader _sr1;

    public void showSelectedFile() 
    { 
        _sr1 = new StreamReader(File.OpenRead(ReturnTxt));
        ReturnContenctRD = _sr1.ReadToEnd();
    }

    public void DisposeSR1() 
    { 
       if(_sr1 != null)
          _sr1.Dispose()
    }

}
于 2013-03-27T00:09:02.267 に答える