在Page_Load方法中声明时,变量不可访问

时间:2013-06-20 12:05:20

标签: c# asp.net

当我声明一个变量时,让我们说

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"};
    }

可能是什么问题?有人可以帮帮我吗。

3 个答案:

答案 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;
    }
}

这样做的一个主要优点是,如果在方法中声明变量,它会意外地停止使用可能已在其他地方定义和使用的变量。如果不是这种情况,您将无法保证变量的状态。