首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于c#中按引用传递对象的1点疑惑

2012-08-03 
关于c#中按引用传递对象的一点疑惑记得《C#经典入门(第5版)》中提到过:除了值类型的对象,其他对象都是按引用

关于c#中按引用传递对象的一点疑惑

记得《C#经典入门(第5版)》中提到过:除了值类型的对象,其他对象都是按引用传递。

所以在下面的例子中,Init()执行完后,aaa新增了一个元素1.

C# code
class test1{    public test1()    {        var aaa = new List<int>();        Init(aaa);    }    private void Init(List<int> zzz)    {        zzz.Add(1);    }}


引起我困惑的主要是下面两个例子,Init()执行完后,aaa没有变化.
C# code
class test2{    public test2()    {        List<int> aaa = null;        Init(aaa);    }    private void Init(List<int> zzz)    {        zzz = new List<int>();    }}


C# code
class test3{    public test3()    {        List<int> aaa = new List<int>();        aaa.Add(1);        Init(aaa);    }    private void Init(List<int> zzz)    {        zzz = new List<int>();        zzz.Add(111);    }}


但加上out或ref之后,Init()执行完后,aaa会发生改变.
C# code
class test4{    public test4()    {        List<int> aaa = null;        Init(out aaa);    }    private void Init(out List<int> zzz)    {        zzz = new List<int>();    }}


最后,我的问题是:为什么test2和test3中aaa没有发生变化?
谢谢您耐心看完我的问题,期待您的解答。


[解决办法]
先看这篇吧

上面那个放这个后面看

热点排行