• 章节:156
  • 访问:1077
  • 时长:00:14:14
  • 日期:2016-10-07 10:06

在35节的时候,我们知道变量是有作用域的,函数的参数变量,作用域只能在函数内部

下面大家看一个栗子

上面代码编译的时候会报错,在vs中也会红色波浪线提示myString没有定义

这是因为 main里面的myString 是只能作用在Main的方法体里面

出了这个{}则其他地方是无法访问的,虽然Main中调用到了Write 也不能访问


实际上,在wite方法里面,我们完全可以自己定义一个myString的变量

所以修改代码后如

其实上面的myString 通常被称为局部变量,因为它的作用域是局部访问,还有一种变量叫全局变量,去作用域可以覆盖多个函数

全局变量

要想定义全局变量,则只需要将变量定义在函数外面(和函数是同一级别)

这里外面定义的myString 需要使用static关键字或者const,如果要修改则需要static const不能修改

如果在Main方法中又定义了同名变量,则如果在函数体内部使用myString 则默认是函数体的变量,全局变量会自动屏蔽,如果要调用局部变量中的myString则要带上类名 比如Program.myString

为什么不使用全局变量的方法来处理函数的数据交换呢?

其实这种方法有时候是可以用在函数交换上面,但是大多数情况是不使用这种方式的,因为函数是为了让我们处理很多事情,而如果使用了全局变量,则会受限制于全局变量的;是否使用视情况而定;


    class Program
    {        static string str = "北盟网校 www.bamn.cn 全局的";        static void Main(string[] args)
        {            string str = "北盟网校 www.bamn.cn";
            Show();
            Console.WriteLine(str);//这个str 它会自动调用里面的这个 自动屏蔽全局的            Console.ReadKey();
        }        static void Show()
        {
            Console.WriteLine(str);
        }
    }