我刚遇到这个问题。据我所知,isn&#t; str1 "应该是一个局部变量,我能够在使用代码块之外创建一个同名的新变量吗?
当然我可以创建一个具有不同名称的变量并继续前进,但这真的让我很烦。有人可以解释一下吗?
public int Execute(string sql, params SqlParameter[] parameters)
{
try
{
this.AddSql(sql, parameters);
using (var cmd = new SqlCommand(sql, this.connection))
{
var str1 = "";
}
//var str1 =""; // error because variable str1 is used above
//str1 =""; // this also causes an error because "Can not resolve symbol 'str1'"
}
catch (Exception e)
{
//...
}
return 0;
}
答案 0 :(得分:1)
如Yeldar添加的链接中所述, 想想"第二" var str1。 在线:
//var str1 =""; // error because variable str1 is used above
如果声明,则此变量的范围将是整个try {}块,其中包含using语句。
这是不允许的,因为这意味着,我们最终会在使用块中有两个" str1" s。