C# 变量声明中的问题

C# 变量声明中的问题,c#,asp.net,C#,Asp.net,在页面加载时,我设置字符串变量DB的值,如下所示: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { String DB = ""; DB = Session["db"].ToString(); } } 我想在另一个方法中使用变量DB(我想把这个值传递给一个方法getpet()): protected void DropDownList2_Selecte

在页面加载时,我设置字符串变量
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();
    }
}

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

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


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

如果您在方法的作用域内声明变量,则无法从此作用域之外访问它。尝试在类级别声明它,并在方法中赋值

class YourClass {

  protected String DB = "";

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

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

在页面范围声明变量。像这样

<%@ 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>

字符串DB=null;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
字符串DB=”“;
DB=Session[“DB”].ToString();
}
}
受保护的void DropDownList2\u SelectedIndexChanged(对象发送方,事件参数e)
{
如果(DropDownList2.SelectedItem.Text==“0”)
{
petres d=新的petres();
字符串呈请者=d.getpet();
}
}
...
...

为什么不在类级别而不是方法级别声明变量?@Mamta Dalal您能解释一下如何做吗?您的意思是为变量声明创建一个单独的类,即.cs文件吗?只需在页面加载方法之外声明“String DB”,但仍在包含的类中。这样,它将在您的其他方法的范围内可用。是的,完全按照C McTackney所说的做。这将使它达到班级水平。