A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-柯校 中级黑马   /  2014-3-24 16:32  /  1377 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-柯校 于 2014-3-24 21:41 编辑

值传递指的是方法被调用时传递进来的参数是一个副本(拷贝),而不是传递进来参数本身。换句话说对值传递参数的修改不会影响到调用方传递的参数对象;
而引用传递指的是方法被调用时传递进来的参数是一个引用,换句话说传递进来的参数是指向调用方传递的参数本身的。对引用传递的参数的修改会影响到调用方传递的参数对象。
求举例说明下

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

倒序浏览
两幅图:


评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
internal class Program
    {

        private static void Main(string[] args)
        {
            int a = 1, b = 2;
            int x = 3, y = 4;

            Swap(a,b);
            RefSwap(ref x,ref y);

            Console.WriteLine("a:{0} b:{1}", a, b);
            Console.WriteLine("x:{0} y:{1}", x, y);
            Console.ReadKey();
        }

        static void Swap(int a, int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }

        static void RefSwap(ref int x, ref int y)
        {
            int temp = x;
            x = y;
            y = temp;
        }
    }

a和b是按值传递 函数交换的是a和b的副本 原来的a和b没有交换
x和y是按引用传递 交换了

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
按值传递:
  1.         static void Main(string[] args)
  2.         {
  3.             int num = 100;
  4.             test(num);
  5.             Console.WriteLine(num);
  6.             Console.ReadKey(true);
  7.         }

  8.         static void test(int num)
  9.         {
  10.             num = -50;
  11.         }
复制代码

输出结果为:
100

说明对值传递参数的修改不会影响到调用方传递的参数对象;

按引用传递:
  1.         static void Main(string[] args)
  2.         {
  3.             int num = 100;
  4.             test(ref num);
  5.             Console.WriteLine(num);
  6.             Console.ReadKey(true);
  7.         }

  8.         static void test(ref int num)
  9.         {
  10.             num = -50;
  11.         }
复制代码

输出结果为:
-50

说明对引用传递的参数的修改会影响到调用方传递的参数对象。
回复 使用道具 举报
int a=3,int b=5;int temp=a;temp=b;b=a;变量之间的传递就是值传递的一种,交换变量后内存空间的值还是存在的,引用传递例如对象之间传递引用,值发生了真正的改变
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马