答案是不要做全局变量(你也不能)。
最靠近Global
的是它在一个类是static
,并有一个static
成员 - 但我真的认为这将是大多数情况下的错误方法。 Static
班级/成员通常会使代码更加耦合并降低可测试性,因此请在您决定时仔细挑选。
不要代替:(通过参数)
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string str = "i am a string";
showString(str);
}
}
void showString(string str)
{
aspLabel.Text = str;
}
或者:
public class SomeClass
{
private string str;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
str = "i am a string";
showString();
}
}
protected void Btn_Click(object sender, EventArgs e)
{
exportToExcel(str);
}
void showString()
{
aspLabel.Text = str;
}
}
在这里,你可以改变str
是一个属性或不同的访问修饰符,如你所愿,但是这是总体思路。
如果您将它作为public而不是private来使用,您将能够从不同的类访问它,该类将持有该类的实例。像这样:
public class SomeClass
{
public string Str { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Str = "i am a string";
showString();
}
}
protected void Btn_Click(object sender, EventArgs e)
{
exportToExcel(Str);
}
void showString()
{
aspLabel.Text = Str;
}
}
public class SomeOtherClass
{
public SomeOtherClass()
{
SomeClass someClass = new SomeClass();
var otherStr = someClass.Str;
}
}
_Therefore,我需要在全球创建它_ - 见我的第二个和第三个代码段为 –