我需要在我的 .net 项目中使用全局变量。但是,我无法在两种方法之间处理它。
my code:
string str;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
str = "i am a string";
showString();
}
}
void showString()
{
aspLabel.Text = str; //error
}
问题更新:
我不会考虑使用showString(str)
因为这个变量被使用了很多方法..例如,我有一个需要使用它的点击事件。
protected void Btn_Click(object sender, EventArgs e)
{
exportToExcel(str);
}
因此,我需要在全局中创建它!
答案是不要使用全局变量(你也不能)。
最靠近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;
}
Or:
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 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;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)