我想声明一个类级别的fileStream对象,但在特定方法中初始化它然后关闭它...这可能会重复发生。我不知道正确的术语来真正描述我想要做的事情,所以这里有一些伪造的代码,应该表明你想要我想做的事。
Some Class () {
declare empty filestream object named FILEREADER
Some Method () {
intialize FILEREADER with text_file.txt
DO STUFF
FILEREADER.Close();
}
Some Method Two () {
intialize FILEREADER with text_file.txt
DO STUFF
FILEREADER.Close();
}
}
现在我知道如何同时声明和初始化这个对象,我只是不知道如何将它分成两个步骤。以下是与我想要做的相同的单步。
FileStream FILEREADER = new FileStream("text_file.txt",
FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
答案 0 :(得分:0)
试试这个:
class SomeClass
{
FileStream FILEREADER; // will be null by default
void SomeMethod()
{
using (FILEREADER = new FileStream(
"text_file.txt",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
// do stuff
}
FILEREADER = null;
}
void SomeMethod2()
{
using (FILEREADER = new FileStream(
"text_file.txt",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
// do stuff
}
FILEREADER = null;
}
}
虽然我不确定为什么你需要FILEREADER
作为会员。为什么不在每个方法中声明一个本地FileStream
?如果在每种方法中打开和关闭它,则无需将其存储在这些方法之外。
你真的应该这样做:
class SomeClass
{
void SomeMethod()
{
using (FileStream FILEREADER = new FileStream(
"text_file.txt",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
// do stuff
}
}
void SomeMethod2()
{
using (FileStream FILEREADER = new FileStream(
"text_file.txt",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
// do stuff
}
}
}
(请注意,在此代码中,using
条款将自动处理Close
FileStream
。
答案 1 :(得分:0)
您是说您不希望将new FileStream(...)
代码与这些特定参数一起用于每种方法吗?然后创建一个方法:
public class DoesStuffToFiles
{
private FileStream OpenTextFile()
{
return new FileStream("text_file.txt",
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite);
}
public void SomeMethod1()
{
using (var file = OpenTextFile())
{
}
}
public void SomeMethod2()
{
using (var file = OpenTextFile())
{
}
}
}