网眼技术@cnblogs

-“十万个为什么”电脑学习网(http://www.why100000.com)

  博客园 :: :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

       C# 语言作为一种强类型的语言,其变量的作用范围得到了严格的限定。在别的语言中,比如 javascript、vbscript 中,变量的作用域只限定到函数和过程内部,但是在 C# 中所有代码块内部定义的变量都只能在本局部范围内使用。比如:

    for(){……}
    while(){……}
    if(){……}else{……}

等。C# 的“代码块”要比别的语言仔细的多。

    比如以下 C# 代码:

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Var
    {
        class Program
        {
            static void Main(string[] args)
            {
                for (int i = 0; i < 6; i++ )
                {
                    int a = 9;
                    a *= i;
                    Console.WriteLine(a);
                }

                Console.WriteLine(a);

                Console.ReadLine();
            }
        }
    }

    由于 Console.WriteLine(a); 一句使用的变量 a 是在 for 代码块内部定义的,所以在编译的时候会报告以下错误:

    Error:The name 'a' does not exist in the current context

    将 Console.WriteLine(a); 一句注释掉后,程序运行结果为:

    0
    9
    18
    27
    36
    45

    但是在 javascript 脚本中:

    <Script language="javascript">
        for (var i = 0; i < 6; i++ )
        {
          var a = 9;
          a *= i;
          document.write (a + "<br>");
        }

        document.write ("forOUT: " + a);
    </Script>

    运行结果:
    0
    9
    18
    27
    36
    45
    forOUT: 45

    因为变量 a 在 for 循环里已经定义并赋值了,所以在后续的语句中就可以使用它。

    在 ASP 中的 vbscript 中也一样:

    <% Option explicit %>
    <%
      dim i
      for i = 0 to 5
        dim a
        a = 9
        a = a*i
        response.write a & "<br>"
      next

      response.write "forOUT: " & a
    %>

    运行结果:
    0
    9
    18
    27
    36
    45
    forOUT: 45

    注意: 以上所有示例中,for 循环中似乎每个循环都在定义变量 a,但是并不报重复定义变量的错误。

    http://www.why100000.com  2007.5.22

posted on 2007-05-22 22:21  张庆  阅读(574)  评论(0)    收藏  举报