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();}}
}

运行结果如下图:

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

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

C#数组按值和按引用传递数组区别相关推荐

  1. boost::safe_numerics模块实现数组索引值可以超出数组边界的测试程序

    boost::safe_numerics模块实现数组索引值可以超出数组边界的测试程序 实现功能 C++实现代码 实现功能 boost::safe_numerics模块实现数组索引值可以超出数组边界的测 ...

  2. 如何统计php数组值的和,php数组键值操作和数组统计函数-函数

    1.数组函数//作用:提供了很多官方写的很多有用的代码段,提高编写速度 1)数组的键值操作函数 array_values();//获取数组中的值 array_keys();//获取数组中的键 in_a ...

  3. php取数组里面数组的值,PHP获取数组的键与值方法小结

    这篇文章主要介绍了PHP获取数组的键与值方法,实例总结了key().current().each().list()等方法的相关使用技巧,需要的朋友可以参考下 本文实例讲述了PHP获取数组的键与值方法. ...

  4. php给二维数组加值,php给数组赋值(二维数组赋值)详解

    在php中数组赋值很简单,如果是一维数组赋值比二维数组或多维数组更简单,下面我来给各位同学介绍给数组赋值各种实例介绍,有需要了解的朋友可参考. PHP数组赋值呢?如下: 例1,一维数组赋值  代码如下 ...

  5. python数组加入值_python一维数组怎么添加元素

    数组是一种有序的集合,可以随时添加和删除其中的元素.可以使用append()函数数组末尾添加新的对象.也可以使用insert()函数将指定对象插入数组的指定位置. 1.append()函数: appe ...

  6. php 按数组键值合并,PHP——数组根据某一键值合并

    其实要实现很简单直接foreach,再根据PHP中数组的特性就可以轻松实现. 2|0步骤 $info = [ [ "gname" => "特别关心" , ...

  7. java如何打印数组的值,Java打印数组元素的值

    本篇文章帮大家学习java打印数组元素的值,包含了Java打印数组元素的值使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 以下实例演示了如何通过重载 MainClass ...

  8. php 筛选数组,2020-07-24 php 通过数组键值对筛选数组

    筛选数组 $listMenu Array ( [0] => Array ( [type] => 0 [min] => 0 ) [1] => Array ( [type] =&g ...

  9. PHP数组键值双引号单引号区别

    一.$myarray['key'] 与 $myarray["key"] 与 $myarray[key]的差别: 以上三种方式主要是通过字符串类型数组下标即数组键访问数组的值,如果数 ...

最新文章

  1. Ubantu安装maven
  2. js原生方法传参的细节(面试必问)
  3. 如何格式化电脑_U盘提示格式化后如何恢复数据
  4. 第二节 MATLAB中图像数据导入、导出和转换
  5. C/C++中手动获取调用堆栈【转】
  6. POI读取word文件,(支持HSSF和XSSF两种方式)
  7. 互联网日报 | 天猫双11今日启动预售;同程艺龙成立酒旅事业群;恒大汽车正式启动科创板上市辅导...
  8. cocos2dx Auto-batching的使用
  9. 不是方阵有逆矩阵吗_Lecture 3 | 乘法和逆矩阵
  10. 恋物志(二):独居者的智能生活指南
  11. 基于vue的房屋中介管理系统
  12. jquery动态创建表格
  13. wma格式怎么转换mp3,4种方法超快学
  14. 多台Linux服务器时钟同步
  15. Java三大版本及 JVM JDK JRE 及 SDK API
  16. 华为 android 菜单键,没有返回和菜单键!华为P10的Home键简单说明
  17. word出现错误报告的解决办法
  18. url地址栏传json格式数据参数
  19. mysql自学笔记九(Navicat Premium 15)
  20. java 图片效果_使用Java进行图片底片化效果处理

热门文章

  1. 栈和队列互相实现,一文弄懂它们的关系
  2. 算法:删除排序数组中的重复项||
  3. 在windows下 格式化SD卡或U盘最快捷、安全的方法!
  4. 常考数据结构与算法:数组中相加和为0的三元组
  5. Istio on ACK集成生态(2): 扩展AlertManager集成钉钉助力可观测性监控能力
  6. Django的mode的分组查询和聚合查询和F查询和Q查询
  7. CSS系列——前端进阶之路:初涉Less
  8. 6、Gerrit插件
  9. Android studio如何使用SVN进行版本控制?
  10. Android 应用内存优化 之 onLowMemory onTrimMemory