博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 的传递参数值传递与传递引用的区别,ref与out区别
阅读量:7210 次
发布时间:2019-06-29

本文共 1104 字,大约阅读时间需要 3 分钟。

 值传递 

 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

  

转载于:https://www.cnblogs.com/ljx2012/p/3631561.html

你可能感兴趣的文章
Android零基础入门第31节:几乎不用但要了解的AbsoluteLayout绝对布局
查看>>
CentOS 6.2 Eclipse CDT 开发环境搭建
查看>>
服务端I/O性能:Node、PHP、Java、Go的对比
查看>>
注解的原理又是怎么一回事
查看>>
nginx开发(二)配置mp4文件在线播放
查看>>
金额逾千万!浪潮智能存储G2中标华中科技大学脑科学研究项目
查看>>
展讯召开2017全球合作伙伴大会,发布两款新平台及新战略
查看>>
Android——DDMS简单介绍
查看>>
SQL error: cannot use the special principal 'sa'
查看>>
写一个简单的实时互动小游戏
查看>>
WIN版的Jenkins Master加入LINUX的SLAVE节点,并作C++程序的集成交付
查看>>
mysql 半同步 5.6及5.7
查看>>
【PMP】Head First PMP 学习笔记 第十章 沟通管理
查看>>
阿里巴巴发布AliOS品牌 重投汽车及IoT领域
查看>>
获得1.5亿区块链投资后,矩阵元怎么做区块链?
查看>>
ASP.NET MVC路由扩展:路由映射
查看>>
【LeetCode从零单排】No118 Pascal's Triangle
查看>>
怎么建立网站?
查看>>
长得像鳗鱼的Envirobot,利用传感器检测并追踪水中有害元素
查看>>
剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
查看>>