黑马程序员技术交流社区

标题: 关于变量的作用域 [打印本页]

作者: 彭思    时间: 2013-3-4 23:58
标题: 关于变量的作用域
在for循环中定义一个局部变量,其作用域是for循环,出了for循环就无效了,如果再用就会报错说使用未定义的变量,那既然未定义我再重新定义为什么又不行呢?这是什么原因?

作者: 安玉波    时间: 2013-3-5 00:15
因为你在for循环内定义了一个变量int a;你又在 for循环外又定义了int a;因为这样会使变量a具有不同的含义,而它已在“子级”范围内表示其它内容,这在C#中是不允许的。
作者: 李景荣    时间: 2013-3-5 00:23
{:3_54:}定义到for循环上面肯定不行,下面的话应该可以的吧?
作者: 彭思    时间: 2013-3-5 00:39
安玉波 发表于 2013-3-5 00:15
因为你在for循环内定义了一个变量int a;你又在 for循环外又定义了int a;因为这样会使变量a具有不同的含义 ...

不是出了作用域了么?
作者: 安玉波    时间: 2013-3-5 00:54
彭思 发表于 2013-3-5 00:39
不是出了作用域了么?

因为在同一个方法中可以定义两个相同名称的局部变量,不可以定义一个全局变量和一个局部变量。
例如:
  1. static void Main(string[] args)
  2.         {
  3.             string str = "zxcvvcxza";
  4.             NewMethod(str);
  5.             
  6.             Console.ReadKey();
  7.         }

  8.         private static void NewMethod(string str)
  9.         {
  10.             foreach (char item in str)
  11.             {
  12.                 int strCount = 0;
  13.                 for (int i = 0; i < str.Length; i++)
  14.                 {
  15.                     if (item.Equals(str[i]))
  16.                     {
  17.                         strCount++;
  18.                     }
  19.                 }
  20.                 Console.WriteLine(item + "出现了" + strCount + "次");
  21.             }
  22.             foreach (var item in str)
  23.             {
  24.                 int strCount = 0;
  25.                 for (int i = 0; i < str.Length; i++)
  26.                 {
  27.                     if (item.Equals(str[i]))
  28.                     {
  29.                         strCount++;
  30.                     }
  31.                 }
  32.                 Console.WriteLine(item + "出现了" + strCount + "次");
  33.             }
  34.         }
复制代码

作者: dbqwaii    时间: 2013-3-5 08:38
变量的作用域是指在他所在的那个大括号内.
出了大括号  这个变量就没有定义了
例如在main方法中 定义了一个 int i=0  那么  它在main方法中都可以用
但是 如果在main方法中的 循环里边定义了了一个变量 int i=0     那么 只要出了他所在的大括号  就没用了
作者: 董华阳    时间: 2013-3-6 16:34
如果你定义在与之前定义for 是平行关系是可以用的。如果你定以在包括for 作用域中,就不可用了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2