【问题标题】:A local variable declared inside using code block is not really a local variable? [duplicate]使用代码块在内部声明的局部变量不是真正的局部变量吗? [复制]
【发布时间】:2016-08-25 05:25:54
【问题描述】:

我刚遇到这个问题。据我所知,“str1”不应该是一个局部变量,我可以在 using 代码块之外创建一个同名的新变量吗?

当然,我可以创建一个具有不同名称的变量并继续前进,但这真的让我很困扰。有人可以解释一下吗?

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;
        }

【问题讨论】:

  • 所以澄清一下,您不能在 using 结构之外创建名称为“str1”的局部变量?

标签: c# local-variables using-statement


【解决方案1】:

正如 Yeldar 添加的链接中所述, 想想“第二个”var str1。 排队:

//var str1 =""; // error because variable str1 is used above

如果声明,此变量的范围将是整个 try{} 块,其中包括 using 语句。

这是不允许的,因为这意味着我们最终会在 using 块中有两个“str1”。

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2011-12-20
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多