当我声明一个变量时,让我们说
public string [] companiesArray = {"Google","BBC","CNN","SportsDirect","Microsoft"};
在公共部分类Default:System.Web.UI.Page之后,该变量是可访问的,但是当我在Page_Load方法中声明该变量时,该变量是不可访问的。
public void Page_Load(object sender, EventArgs e)
{
string [] companiesArray = {"Google","BBC","CNN","SportsDirect","Microsoft"};
}
可能是什么问题?有人可以帮帮我吗。
答案 0 :(得分:4)
阅读Scope
如果在Page_Load
方法中定义了变量,那么它就是该方法的本地
如果您在方法之外定义它,那么它对代码的其余部分是可见的,并且通常被称为Field,例如
public partial class Page : System.Web.UI.Page
{
private string[] companiesArray = {"Google","BBC","CNN","SportsDirect","Microsoft"};
public void Page_Load(object sender, EventArgs e)
{
//companiesArray is visible here
}
public void SomeOtherMethod()
{
//companiesArray is visible here too
}
}
答案 1 :(得分:3)
如果您在Page_load
内声明变量,那么该范围的本地变量。
如果您在public partial class Default : System.Web.UI.Page
它是所有网页的全局变量。
答案 2 :(得分:3)
您需要了解范围。
在页面中定义数组时,您将范围定义为类。您可以在类中的任何位置使用该变量。
public partial class Default : System.Web.UI.Page
{
string[] companiesArray;
public void DoFizz()
{
companiesArray[0] = "Fizz";
}
public void DoBuzz()
{
companiesArray[1] = "Buzz";
}
}
在页面加载中定义它时,范围仅限于该方法,因此您只能在该方法中使用它。
public partial class Default : System.Web.UI.Page
{
public void Page_Load(object sender, EventArgs e)
{
string[] companiesArray;
}
}
这样做的一个主要优点是,如果在方法中声明变量,它会意外地停止使用可能已在其他地方定义和使用的变量。如果不是这种情况,您将无法保证变量的状态。