关于某些变量的范围

时间:2010-09-23 11:36:33

标签: c#

我可以按照我的方式在try block之外的代码中使用“str”命名变量吗?

我有点困惑。

if ()
{
 try
 {
  String str;
 }
 catch
 {
  //exception
 }
 String result=str; // Will this work ??? It's inside of IF block only.
}

7 个答案:

答案 0 :(得分:2)

假设你想要字符串result = str; ......不,它不会工作。

答案 1 :(得分:1)

不,您在try块中声明的任何内容都只能在try块的范围内使用。

访问您在try块中使用的变量的唯一方法是在try块之前声明它。

答案 2 :(得分:1)

我认为您的问题是,您是否可以引用try块外部的try块中定义的变量。答案是否定的,但是你可以引用在try块之外定义的变量并在try块中设置如下:

string myVar;

try
{
   myVar = "something";
}
catch {}

// now you can set otherVar to "something"
string otherVar = myVar;

答案 3 :(得分:1)

始终在try catch块之前声明变量,并将其初始化为null或默认值,以适用者为准。

如果您在try或catch中使用变量或者最后使用变量或者根本不使用变量,则无关紧要。它将为您节省麻烦,它将提高您的代码的可读性。

public void processSomeRequest()
{

   string firstVariable = null;
   string secondVariable = null;
   int someInt = 0;

   try
   {
       // Initialise variables
       firstVariable = "test";
       secondVariable = "blah";

       // Process request code
   }
   catch(Exception e)
   {
       logException(e);
       throw;
   }

}

基本示例,但您知道从一开始就要使用什么。将突出显示未使用的变量。

答案 4 :(得分:0)

没有。声明仅限于try块。您甚至无法在catch区块中使用它。

答案 5 :(得分:0)

如果在范围内的块中声明变量({}内的任何内容),则只能在其中使用。

答案 6 :(得分:0)

不,在try {}块之外声明你的“str”。