首页 新闻 会员 周边

变量A的声明写在使用之后就行,但是变量B写在使用之后就不行呢?报错“局部变量“B”在声明之前无法使用

0
[已解决问题] 解决于 2013-04-21 20:43
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 作用域研究__及其影响
 7 {
 8     class Program
 9     {
10        
11         static void Main(string[] args)
12         {
13             语句的读取顺序 Sequence = new 语句的读取顺序();
14             string s = Sequence.Test("希望测试通过");
15             Console.ReadKey();
16         }
17     }
18 
19     class 语句的读取顺序
20     {
21        
22         public 语句的读取顺序()
23         {
24             
25         }
26 
27        public  string Test(string a)
28         {
29             A = a;//怎么局部变量A在声明之前就可以使用呢?
30             for(int i=0;i<5;i++)
31             {
32                 B = i;
33             }
34 /*
35 错误:局部变量“B”在声明之前无法使用    但是怎么局部变量A在声明之前就可以使用呢?
36 */
37             int B;
38             Console.WriteLine(B);
39             Console.WriteLine(A); //怎么局部变量A在声明之前就可以使用呢?
40            string s= "成功运行";
41             return s;
42         }
43        string A;
44     }
45 }

这个程序调试的错误是错误:局部变量“B”在声明之前无法使用。可我就不明白,怎么变量A的使用【 A = a;Console.WriteLine(A);】却可以在声明string A 之前使用。

希望老师们指导,学生彩笔,对运行时库 CRL不懂,对于new一个对象时,类的创建顺序不懂,我原本认为,string A的变量A也是有问题的,因为上课时,老师总是说“程序是逐语句,顺序读取的”,那么在读取代码的第29行( A = a;)的时候,那么第43行声明(string A),也没有读取到啊?声明老师们指导,对我进行教育,普及一下知识,我知道我在这里,对知识点非常模糊。

黑夜猫头鹰的主页 黑夜猫头鹰 | 初学一级 | 园豆:3
提问于:2013-04-21 12:47
< >
分享
最佳答案
0

A 是类的成员变量,不是局部变量,声明对象时就创建 赋值了,   B是方法的 局部变量,执行到B时 才会在堆栈创建。

奖励园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2013-04-21 14:49

“A 是类的成员变量,声明对象时就创建 赋值了”,你的这一句,我不太懂啊?我对A变量的赋值是在public  string Test(string a)方法中,创建时,我没有给A变量赋值呢?你怎么说创建时,就赋值了???

黑夜猫头鹰 | 园豆:3 (初学一级) | 2013-04-21 15:49
其他回答(3)
0

A  相当于“class 语句的读取顺序” 的成员变量,所以可以在成员函数内使用

凤凰·Heicoer | 园豆:202 (菜鸟二级) | 2013-04-21 13:35

变量B也是“class 语句的读取顺序” 的成员变量,只不过是放在方法内而已

支持(0) 反对(0) 黑夜猫头鹰 | 园豆:3 (初学一级) | 2013-04-21 14:48

@黑夜猫头鹰: 你还是好好看看局部变量的概念吧

支持(0) 反对(0) 凤凰·Heicoer | 园豆:202 (菜鸟二级) | 2013-04-21 14:53
0

代码快的编译是从上到下的,B还没申明怎么可以使用呢

yanggm | 园豆:131 (初学一级) | 2013-04-21 14:23

那么变量A的使用也是29行,而声明在43行,怎么就可以使用呢

支持(0) 反对(0) 黑夜猫头鹰 | 园豆:3 (初学一级) | 2013-04-21 14:42

@黑夜猫头鹰: A是全局的啦

支持(0) 反对(0) yanggm | 园豆:131 (初学一级) | 2013-04-21 14:50
0

经过各位老师指点,学生好像明白了。一个类的成员,都是全局变量,一个方法函数内的变量都是局部变量。一个全局变量的声明,可以放在方法函数的后面,是因为:当我们的编译器进行编译时,就需要new一个对象实例,这时类的成员都被初始化赋值(否则赋一个null值),当我们调用方法时,方法内含有的类成员变量早都声明初始化了。最终还是符合那句话“变量先赋值初始化,再使用”

黑夜猫头鹰 | 园豆:3 (初学一级) | 2013-04-21 20:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册