变量A的声明写在使用之后就行,但是变量B写在使用之后就不行呢?报错“局部变量“B”在声明之前无法使用
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),也没有读取到啊?声明老师们指导,对我进行教育,普及一下知识,我知道我在这里,对知识点非常模糊。

弑天下
浏览 763回答 8
8回答
-
陪伴而非守候
A 是类的成员变量,不是局部变量,声明对象时就创建 赋值了, B是方法的 局部变量,执行到B时 才会在堆栈创建。
-
青春有我
A 相当于“class 语句的读取顺序” 的成员变量,所以可以在成员函数内使用
-
慕标琳琳
变量B也是“class 语句的读取顺序” 的成员变量,只不过是放在方法内而已
-
慕妹3146593
@黑夜猫头鹰: 你还是好好看看局部变量的概念吧
-
一只名叫tom的猫
代码快的编译是从上到下的,B还没申明怎么可以使用呢
-
慕侠2389804
那么变量A的使用也是29行,而声明在43行,怎么就可以使用呢
-
慕田峪7331174
@黑夜猫头鹰: A是全局的啦
-
12345678_0001
经过各位老师指点,学生好像明白了。一个类的成员,都是全局变量,一个方法函数内的变量都是局部变量。一个全局变量的声明,可以放在方法函数的后面,是因为:当我们的编译器进行编译时,就需要new一个对象实例,这时类的成员都被初始化赋值(否则赋一个null值),当我们调用方法时,方法内含有的类成员变量早都声明初始化了。最终还是符合那句话“变量先赋值初始化,再使用”
打开App,查看更多内容