变量声明中的问题

时间:2011-04-18 09:25:52

标签: c# asp.net

在页面加载时,我按如下方式设置String变量DB的值:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
     String DB = "";
     DB = Session["db"].ToString();
    }
}

我想在另一个方法中使用变量DB(我希望将此值传递给方法getpet()):

protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
    if(DropDownList2.SelectedItem.Text=="0")
    {
         petres d = new petres();
         String petitioner=d.getpet();
    }
}

如何在另一种方法中使用在一个方法中声明的变量?

3 个答案:

答案 0 :(得分:1)

在Page范围声明变量。像这样。

<%@ Page Language="C#" Debug="true" %>
<script runat="server">

    String DB = null;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
         String DB = "";
         DB = Session["db"].ToString();
        }
    }


    protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if(DropDownList2.SelectedItem.Text=="0")
        {
            petres d = new petres();
            String petitioner=d.getpet();
        }
    }

</script>
<html>
<head>
    ...
</head>
<body>
...
</body>
</html>

答案 1 :(得分:0)

此问题是由于变量的范围解析所致。如果您需要类中所有方法的变量,请在类级别声明它。

对于您的情况,您可以在类级别声明它并在Page_load中指定一个值,然后在其他地方使用它。

答案 2 :(得分:0)

如果在方法范围内声明变量,则无法从此范围外部访问它。尝试在类级别声明它,并在方法中指定值。

class YourClass {

  protected String DB = "";

  protected void firstMethod() {
    DB = "whatever you want";
  }

  protected void secondMethod() {
    Console.writeln(DB);
  }
}