Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在作用域中使用相同的变量名_C#_Variables - Fatal编程技术网

C# 在作用域中使用相同的变量名

C# 在作用域中使用相同的变量名,c#,variables,C#,Variables,我需要使用相同的变量名来声明连接字符串。 但是当我这样做的时候,我会有更多的错误。 对于第一个变量,我声明了“SqlConnection sqlCon=newsqlconnection(strCon);”,我可以再次使用它吗? 根据我的老师,我应该使用相同的变量 string strCon = Database.GetConStr(); SqlConnection sqlCon = new SqlConnection(strCon); try { string strSq

我需要使用相同的变量名来声明连接字符串。 但是当我这样做的时候,我会有更多的错误。 对于第一个变量,我声明了“SqlConnection sqlCon=newsqlconnection(strCon);”,我可以再次使用它吗? 根据我的老师,我应该使用相同的变量

string strCon = Database.GetConStr();
    SqlConnection sqlCon = new SqlConnection(strCon);
    try
    { string strSql = "SELECT Name, ID FROM student WHERE Status = 'A' ORDER BY Name";
        SqlCommand sqlCmd = new SqlCommand(strSql, sqlCon);
        sqlCon.Open();
        SqlDataReader reader = sqlCmd.ExecuteReader();
        while (reader.Read())
        {
            ddlStaff.Items.Add(new ListItem(reader["Name"].ToString(), reader["ID"].ToString()));
        }
        reader.Close();
    }
    catch (Exception ex)
    {
        Session["Error"] = "Error in getting ... System Msg: " + ex.Message;
        Server.Transfer("Error.aspx");
    }
    finally
    {
        if (sqlCon.State == ConnectionState.Open)
            sqlCon.Close();
    }

    string strCon2 = Database.GetConStr();
    sqlCon = new SqlConnection(strCon2);
    try
    { string strSql2 = "SELECT Desc1, Desc2 FROM Parameter WHERE Paracode1 = 'Test' AND Status = 'A' ORDER BY Desc1";
        SqlCommand sqlCmd2 = new SqlCommand(strSql2, sqlCon);
        sqlCon.Open();
        SqlDataReader reader2 = sqlCmd2.ExecuteReader();
        while (reader2.Read())
        {
            ddlModule.Items.Add(new ListItem(reader2["Desc1"].ToString(), reader2["Desc22"].ToString()));
        }
        reader2.Close();
    }
    catch (Exception ex)
    {
        Session["Error"] = "Error in getting ... System Msg: " + ex.Message;
        Server.Transfer("Error.aspx");
    }
    finally
    {
        if (sqlCon.State == ConnectionState.Open)
        sqlCon.Close();
    }

是因为我不能使用相同的变量吗?

您可以重复使用相同的变量名。问题是你要申报两次。尝试从第二个实例中删除“SqlConnection”(变量类型)。

您可以重新使用相同的变量名。问题是你要申报两次。请尝试从第二个实例中删除“SqlConnection”(变量类型)。

在同一声明空间中不能多次声明同一变量名。但是你可以很好地使用它

try removing SqlConnection in second declaration:
    /*SqlConnection*/ sqlCon = new SqlConnection(strCon2);
如果要声明相同的名称,则可以使用{}

例如:

{
    SqlConnection sqlCon = new SqlConnection(strCon);
   //use sqlCon 
}//scope ends
//sqlCon  is not available after } 
{ //new scope starts
     SqlConnection sqlCon = new SqlConnection(strCon);
}

不能在同一声明空间内多次声明同一变量名。但是你可以很好地使用它

try removing SqlConnection in second declaration:
    /*SqlConnection*/ sqlCon = new SqlConnection(strCon2);
如果要声明相同的名称,则可以使用{}

例如:

{
    SqlConnection sqlCon = new SqlConnection(strCon);
   //use sqlCon 
}//scope ends
//sqlCon  is not available after } 
{ //new scope starts
     SqlConnection sqlCon = new SqlConnection(strCon);
}
试着这样做:- sqlConnection sqlcon=新的sqlConnection(); //第一连接 sqlcon.connectionstring=“连接字符串1” 做些工作。。。。 //第二 sqlcon.connectionstring=“连接字符串2” ……试着这样做:- sqlConnection sqlcon=新的sqlConnection(); //第一连接 sqlcon.connectionstring=“连接字符串1” 做些工作。。。。 //第二 sqlcon.connectionstring=“连接字符串2”
……哦,我以前试过。但它不起作用。它给了我这个错误:“名称‘sqlCon’在当前上下文中不存在。”当我从第二个实例中删除sqlConnection时,它不在try块中。但是我在try块中使用了变量sqlCon(但它不会影响,对吗?因为这里不是声明。或者它会影响吗?)。如果在输入第一个try..catch块之前声明了它,那么sqlCon变量也应该在第二个try..catch块中可用。如果你发布更新后的代码,我们可能会看到出了什么问题。哦,我以前试过。但它不起作用。它给了我这个错误:“名称‘sqlCon’在当前上下文中不存在。”当我从第二个实例中删除sqlConnection时,它不在try块中。但是我在try块中使用了变量sqlCon(但它不会影响,对吗?因为这里不是声明。或者它会影响吗?)。如果在输入第一个try..catch块之前声明了它,那么sqlCon变量也应该在第二个try..catch块中可用。如果您发布更新的代码,我们可能会看到出了什么问题。谢谢。我以前试过第一种方法。它不起作用。第二种方法效果很好。:)我注意到您混淆了“范围”和“声明空间”。在同一范围内声明两个同名变量通常是完全合法的。例如,类C{int x;void M(){int x;}}——这里有两个变量,都称为x,都在类C定义的范围内声明。区别在于它们位于不同的声明空间,这使它合法。谢谢。我以前试过第一种方法。它不起作用。第二种方法效果很好。:)我注意到您混淆了“范围”和“声明空间”。在同一范围内声明两个同名变量通常是完全合法的。例如,类C{int x;void M(){int x;}}——这里有两个变量,都称为x,都在类C定义的范围内声明。区别在于它们位于不同的声明空间中,这使其合法。