C#数组按值和按引用传递数组区别

C#中,存储数组之类对象的变量并不是实际存储对象本身,而是存储对象的引用。按值传递数组时,程序将变量传递给方法时,被调用方法接受变量的一个副本,因此在被调用时试图修改数据变量的值时,并不会影响变量的原始值;而按引用传递数组时,被调用方法接受的是引用的一个副本,因此在被调用时修改数据变量时,会改变变量的原始值。下面一个例子说明如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Array
{
    class Program
    {
        public static void FirstDouble(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = a[i] * 2;
            }

            a = new int[] { 11, 12, 13 };
        }

        public static void SecondDouble(ref int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = a[i] * 2;
            }
            a = new int[] { 11, 12, 13 };
        }

        public static void OutputArray(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("{0}", array[i]);
            }
            //Console.WriteLine("\n");
        }

        static void Main(string[] args)
        {
            int[] array = { 1, 2, 3 };
            Console.WriteLine("不带ref关键字方法调用前数组内容:");
            OutputArray(array);
            FirstDouble(array);
            Console.WriteLine("不带ref关键字方法调用后数组内容:");
            OutputArray(array);
            int [] array1={1,2,3};
            Console.WriteLine("带ref关键字方法调用前数组内容:");
            OutputArray(array1);
            SecondDouble(ref array1);
            Console.WriteLine("带ref关键字方法调用后数组内容:");
            OutputArray(array1);
            Console.ReadLine();
        }
    }
}

运行结果如下图:

image

注意的是:调用带ref关键字的方法时,参数中也要加ref关键字。

转载于:https://www.cnblogs.com/shawnzhou/p/3317678.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值