首页 新闻 会员 周边

到底有没有被空引用?

0
[待解决问题]

Main(){

StringBuilder s = new StringBuilder();
s.Append("AA");
F(s);
Console.WriteLine(s);}

public static void F(StringBuilder s){

s==null;

}为什么没有被空引用

功夫丶书生的主页 功夫丶书生 | 菜鸟二级 | 园豆:202
提问于:2016-03-09 19:10
< >
分享
所有回答(2)
0

为什么会空引用?

吴瑞祥 | 园豆:29449 (高人七级) | 2016-03-09 19:19

不好意思,写错了,在方法里想写s=null;的

支持(0) 反对(0) 功夫丶书生 | 园豆:202 (菜鸟二级) | 2016-03-09 19:20

@功夫丶书生: 哦.连引用传递和值传递问题都算不上.只是作用域问题..在主函数有一个s变量,他本身是在栈内存里的.作用域在主函数中.当进入函数F时.将s的值赋给了一个新的变量s这个变量的作用域是F.所以你给在F内的s赋值时操作的是在F中的s而不是在主函数中的s,这2个s都指向都一个对象.所以你通过s操作该对象时.才能在外部看到效果.

支持(1) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-03-09 21:30

函数内部赋为空 看来是断了与  变量值断联系,没有影响到外面的变量,谢谢哥们

支持(0) 反对(0) 功夫丶书生 | 园豆:202 (菜鸟二级) | 2016-03-09 21:34

@功夫丶书生: 你能说出断了联系这句话.也真的是人才..百度了解下变量作用域吧.学完作用域,学指针.就能测底明白这些东西了.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-03-09 22:31
0

public static void F(ref StringBuilder s){

s=null;

}

Daniel Cai | 园豆:10424 (专家六级) | 2016-03-10 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册