Main(){
StringBuilder s = new StringBuilder();
s.Append("AA");
F(s);
Console.WriteLine(s);}
public static void F(StringBuilder s){
s==null;
}为什么没有被空引用
为什么会空引用?
不好意思,写错了,在方法里想写s=null;的
@功夫丶书生: 哦.连引用传递和值传递问题都算不上.只是作用域问题..在主函数有一个s变量,他本身是在栈内存里的.作用域在主函数中.当进入函数F时.将s的值赋给了一个新的变量s这个变量的作用域是F.所以你给在F内的s赋值时操作的是在F中的s而不是在主函数中的s,这2个s都指向都一个对象.所以你通过s操作该对象时.才能在外部看到效果.
函数内部赋为空 看来是断了与 变量值断联系,没有影响到外面的变量,谢谢哥们
@功夫丶书生: 你能说出断了联系这句话.也真的是人才..百度了解下变量作用域吧.学完作用域,学指针.就能测底明白这些东西了.
public static void F(ref StringBuilder s){
s=null;
}