messageIn在当前上下文中不存在

时间:2012-08-21 06:41:07

标签: c# c#-4.0

我的代码如下所示。

我从查询字符串中获取消息。在那之后,我将把它传达给array(msg_arr)消息。但所有这些内容都在Page_load内。

但为什么会出现这个错误?

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        try
        {
            string messageIn = Request.QueryString["msg"];  
            // some code here
        }
        catch(Exception ex)
        {
            Response.Write(ex.Message);
        }

        string[] msg_arr = messageIn.Split(' '); // error shown here
        int size = msg_arr.Length;

        if(!CheckUserExistAndReporter("messageIn"))
        {
           // Response.Redirect("~/test.aspx");
        }
        else
        {

5 个答案:

答案 0 :(得分:6)

你在try-block中声明了messageIn,这就是你的问题。

只需在外面宣布:

string messageIn = null;
try
{
    messageIn = Request.QueryString["msg"];
    // some code here
}

...

try - 块创建一个新范围,因此在其中声明的变量在外部不可见。

答案 1 :(得分:4)

当你这样做时

try
{
 string messageIn = Request.QueryString["msg"];

 // some code here

 }

字符串的范围仅限于try块,并且不再存在于该块之外。

你必须将字符串的范围增加到整个if块以使其工作

if (!IsPostBack)
{
string messageIn = string.Empty;
......
try
{
messageIn = Request.QueryString["msg"];
// some code here
}

答案 2 :(得分:3)

在区块外宣布string messageIn

protected void Page_Load(object sender, EventArgs e)
{
    string messageIn=string.Empty;
    ....
}

答案 3 :(得分:3)

您收到错误是因为您在try块中声明了messageIn。试试这个:

string messageIn;
try
{
   messageIn = Request.QueryString["msg"];
   // some code here
}
catch(Exception ex)
{
  Response.Write(ex.Message);
}

if (!string.IsNullOrEmpty(messageIn)
{
   string[] msg_arr = messageIn.Split(' ');
   ...
}

答案 4 :(得分:2)

您在messageIn块中声明try{}变量,因此其范围仅在try{}块内。

你应该做这样的事情

protected void Page_Load(object sender, EventArgs e)
{
string messageIn=string.Empty;
    if (!IsPostBack)
    {
        try
        {

             messageIn = Request.QueryString["msg"];

            // some code here


        }
        catch(Exception ex)
        {
            Response.Write(ex.Message);
        }


        string[] msg_arr = messageIn.Split(' '); // error shown here
        int size = msg_arr.Length;

        if(!CheckUserExistAndReporter("messageIn"))
        {
           // Response.Redirect("~/test.aspx");
        }