为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

弑天下 2018-12-07 02:39:07
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
查看完整描述

8 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

A 是类的成员变量,不是局部变量,声明对象时就创建 赋值了,   B是方法的 局部变量,执行到B时 才会在堆栈创建。
查看完整回答
反对 回复 2018-12-09
?
青春有我

TA贡献1784条经验 获得超8个赞

A  相当于“class 语句的读取顺序” 的成员变量,所以可以在成员函数内使用
查看完整回答
反对 回复 2018-12-09
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

变量B也是“class 语句的读取顺序” 的成员变量,只不过是放在方法内而已
查看完整回答
反对 回复 2018-12-09
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

@黑夜猫头鹰: 你还是好好看看局部变量的概念吧
查看完整回答
反对 回复 2018-12-09
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

代码快的编译是从上到下的,B还没申明怎么可以使用呢
查看完整回答
反对 回复 2018-12-09
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

那么变量A的使用也是29行,而声明在43行,怎么就可以使用呢
查看完整回答
反对 回复 2018-12-09
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

@黑夜猫头鹰: A是全局的啦
查看完整回答
反对 回复 2018-12-09
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信