C#中变量的作用域问题

变量的作用域是可以访问该变量的代码域,确定作用域可以根据以下规则。
(1)字段(也称成员变量)所属的类在某个作用域内,则字段也在该作用域内。
(2)在while、for、do或类似语句中声明的局部变量存在于该循环体内。
(3)局部变量存在于表示声明该变量的块语句或方法结束的封闭括号之前的作用域内,一旦离开这个作用域后要再次使用这个局部变量名则要求用户重新声明,虽然这两个变量同名但完全是两个变量,因为它们有各自的作用域。
View Code
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             for (int i = 0; i <= 100; i++)   //定义变量i,并且设置循环的次数;
 6             {
 7                 Console.WriteLine(i.ToString()); //输出0-100的数字。
 8 
 9             }
10             //Console.Write(i);
11             //错误    1    当前上下文中不存在名称“i”
12 
13             Console.ReadKey();     //程序停止,等待输入。
14         }
15     }
 
 
 
View Code
 1 public class TestScope
 2     {
 3         public TestScope()
 4         {
 5 
 6             //sA 在TestScope()方法内部有效.
 7             string[] sA = new string[5] { "H", "e", "l", "l", "o" };
 8             
 9             //块作用域:s6只在foreach循环内部有效。
10             foreach (string s6 in sA)
11             {
12                 Console.WriteLine(s6);
13             }
14 
15             //在这里不能引用s6
16             //Console.WriteLine(s6);
17 
18             //同样不能重新定义s6
19             //string s6 = "";
20         }
21     }

 

View Code
namespace Test
{
    // Code for first Try It Out
    //class Program
    //{
    //    static void Write()
    //    {
    //       Console.WriteLine("Text output from function.");
    //    }

    //   static void Main(string[] args)
    //    {
    //        Write();
    //       Console.ReadKey();
    //    }
    //}

    // Code for fourth Try It Out
    //class Program
    //{
    //    static void Write()
    //    {
    //        Console.WriteLine("myString = {0}", myString);//错误    1    当前上下文中不存在名称“myString”    

    //    }

    //    static void Main(string[] args)
    //    {
    //        string myString = "String defined in Main()";
    //        Write();
    //        Console.ReadKey();
    //    }
    //}

    //// Code for first part of How It Works in fourth Try It Out
    //class Program
    //{
    //    static void Write()
    //    {
    //        string myString = "String defined in Write()";
    //        Console.WriteLine("Now in Write()");
    //        Console.WriteLine("myString = {0}", myString);
    //    }

    //    static void Main(string[] args)
    //    {
    //        string myString = "String defined in Main()";//作用域不同,无重复定义冲突
    //        Write();
    //        Console.WriteLine("\nNow in Main()");
    //        Console.WriteLine("myString = {0}", myString);
    //        Console.ReadKey();
    //    }
    //}

    //// Code for second part of How It Works in fourth Try It Out
    class Program
    {
        static string myString;

        static void Write()
        {
            string myString = "String defined in Write()";
            Console.WriteLine("Now in Write()");
            Console.WriteLine("Local myString = {0}", myString);
            Console.WriteLine("Global myString = {0}", Program.myString);
        }

        static void Main(string[] args)
        {
            string myString = "String defined in Main()";
            Program.myString = "Global string";
               
            Console.WriteLine("\nNow in Main()");
            Console.WriteLine("Local myString = {0}", myString);
            Console.WriteLine("Global myString = {0}", Program.myString);
            Console.ReadKey();
        }
    }
}

 

 

转载于:https://www.cnblogs.com/fighting-mochou/archive/2012/11/11/2764324.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值