【发布时间】:2015-03-04 03:45:18
【问题描述】:
我正在尝试从静态方法访问变量。我了解静态与非静态方法的基本概念,但仍然不完全了解静态方法可以访问和不能访问的内容。
起初我试图将变量放在程序类的顶部,正如您从我的一些注释掉的行中看到的那样。我无法从我的静态方法中访问它们,因为我了解了更多关于静态的知识。但后来我把变量放在静态方法中。这是我不明白的。在静态方法中,我可以设置fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite);,但是一旦在if 语句之外,当我在静态方法中使用FileStream fs 时,sw = new StreamWriter(fs) 给了我一个错误。尝试将其设为静态,如您在静态方法内的注释行中所见,但这也不起作用。我似乎能够访问我的变量的唯一方法是,如果我在 Program 类中(在静态方法之外)将它们设为静态。
class Program {
static FileStream fs;
// public bool fileopen = false;
// String filename = @"D:\Stock Trading\Test1.txt";
static void Main(string[] args) {
CreateDebugFile();
}
public static void CreateDebugFile() {
StreamWriter sw;
bool fileopen = false;
// static FileStream fs;
String filename = @
"D:\Stock Trading\Test1.txt";
if (!fileopen) {
fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite);
fileopen = true;
}
sw = new StreamWriter(fs);
sw.Write("Current Bar" + "\t" + "time" + "\t" + "Open" + "\t" + "Close" + "\t" + "Low" + "\t" + "High");
}
}
【问题讨论】:
-
“一个错误”非常模糊。
-
规则很简单:静态方法只能访问静态成员。在任何方法中声明的任何变量都没有访问限制,无论该方法是否是静态的。