zoukankan      html  css  js  c++  java
  • c# 的传递参数值传递与传递引用的区别,ref与out区别

     值传递 

     C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效。

    但是要注意,当传递是引用类型时,因为引用类型是一个引用的地址,所以修改引用地址指向的对象时,一样会修改对象的值,这种现象不能当做引用传递

     引用传递

     引用传递是对象本身传递给方法,当在方法中对对象做修改时,退出方法后修改是有效的,在C#中引用传递需要在参数类型前加关键字 ref ,但是ref 的参数变量在使用前必须被初使化,可有时通过引用传递的变量初值是没意义的,这容易产生混淆,这时在C#中有另一关键字 out ,out 与 ref 关键字使用时效果一样,但是out关键字对变量可以不初使化,但是out关键字的变量在方法中必须给分配一个值,否则编译会不通过

    class Program
        {
            static void Main(string[] args)
            {
                var v = new Values();
                int i = 10;
                int j;
                Console.WriteLine(v.a);
                Method.Update(v, ref i, out j);
                Console.WriteLine(string.Format("v.a={0}", v.a));
                Console.WriteLine(string.Format("i={0}", i));
                Console.WriteLine(string.Format("j={0}", j));
                Console.ReadKey();
            }
        }
        public class Values
        {
            public int a = 10;
        }
        public class Method
        {
            public static void Update(Values v, ref int i, out int j)
            {
                v.a = 20;
                i = 20;
                j = 20;
            }
        }
    

      

     

     输出值:10

     v.a= 20

          i=20

          j=20

      

  • 相关阅读:
    VS 2012 + NDK + ADT 开发(Cocos2d-x 3.1开发)PART 2
    VS 2012 + NDK + ADT 开发(Cocos2d-x 3.1开发)PART 1
    WebView读取SD卡上的HTML
    安卓隐藏控件
    OMNET++安装
    产品质量的核心——概念的完整性
    关于异常
    基类与子类之间的引用转换
    成绩划分 处理异常
    《大道至简 第七、八章》读后感
  • 原文地址:https://www.cnblogs.com/ljx2012/p/3631561.html
Copyright © 2011-2022 走看看