我对参数传递的方式的理解:

  • 对于值类型来说,参数以传值来传递,这种方式没有人会感到疑惑.
  • 对于引用类型来说,就比较困难.

自己写了一段小代码来帮助自己理解,如下:       

using System;

 

public class ConsoleTest

{

     public static void Main()

     {

         Test first = new Test();

         first.Print();

    

         Change(first);

 

         if(first == null)

            Console.WriteLine("Sorry,first is changed by Change method");

            else

               first.Print();

     }

 

     public static void Change(Test o)

     {

         o.Name = "It's Changed String";

         o = null;

     }

}

 

public class Test

{

     private String _name = "It's a test string";

    

     public String Name

     {

        get{ return _name;}

        set{ _name = value;}

     }

 

     public void Print()

     {

     Console.WriteLine(_name);

     }

}
执行结果:
It's a test string
It's Changed String

结论:
1:对于值类型的参数来说,传递的是值的拷贝.
2:对于引用类型的参数来说,传递的是引用本身的拷贝.这意味这参数引用的对象变了,却不影响传递给此参数的变量所引用的对象.如上所示,尽管参数变量o被改变成引用一个不存在的对象,但first仍然引用的是Test的一个实例对象,所以不会出现
Sorry,first is changed by Change method字符串.

BTW:有时间还得请教Meyer关于广义接口与interface的区别.

posted on 2004-03-26 18:19  我爱妞妞我  阅读(1697)  评论(6编辑  收藏  举报