初级知识点二——C#值传递

C#中有值传递和引用传递,这个东西一直有点儿绕,今天花点儿时间来把这个事情搞清楚。

  • 传递值类型的参数

  值类型的变量,是直接包含其数据的。实际上,在向方法传递一个值类型变量,其实就意味着向方法传递了一个变量的副本。在方法内部发生的对参数的改版,不影响原变量的值。

 1 class PassValue
 2 {
 3        static  void Main ()
 4       {
 5              int Value = 5;
 6              int Value2  = Double(Value);
 7              System.Consle.WriteLine(Value == Value2);
 8       }
 9       
10        static int Double(int value)
11        {
12              return value*2;
13         }
14 }    

           在这个例子中,最终的结果为false,Value = 5,值未被改变。

     通过引用传递值类型:

            如果使用 ref 关键字来传递值参数,其余的与上面案例都相同,那么最终的运行结果为true。因为此时已经将Value的引用传递了过去,实际上Double(int value)方法操作的就是Value本身。

  总结:

  1. 值传递,传递的并不是以前的实体,而只是实体的一个副本,在方法中修改传入的值,并不会影响之前的值实体。

  2. 引用传递,比如利用ref、out关键字传递,这样传递的其实是实体在堆中的地址,指向了传递的实体,因此方法操作时,会改变原先的实体对象。

posted @ 2017-07-02 23:01  gameDesigner  阅读(274)  评论(0编辑  收藏  举报