答案是不要做全局變量(你也不能)。
最靠近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,我需要在全球創建它_ - 見我的第二個和第三個代碼段爲 –