千家信息网

C#关键字in、out、ref的作用与区别是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"C#关键字in、out、ref的作用与区别是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C#关键字in、out、ref的作用
千家信息网最后更新 2026年11月02日C#关键字in、out、ref的作用与区别是什么

这篇文章主要讲解了"C#关键字in、out、ref的作用与区别是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C#关键字in、out、ref的作用与区别是什么"吧!

简介:

In:过程不会改写In的内容 ,默认的传递方式,即向函数内部传送值。
Out和out:传入的值不会被过程所读取,Out在传入的时候,参数的数值会清空,但过程可以写 。只出不进
ref:可以把参数的数值传递进函数 ,过程会读,会写 。有进有出。

一、In

In 关键字使参数按值传递。即向函数内部传送值。

例如:

using System;class gump{    public double square(double x)    {        x=x*x;        return x;    }}class TestApp{    public static void Main()    {        gump doit=new gump();        double a=3;        double b=0;        Console.WriteLine(\"Before square->a={0},b={1}\",a,b);//a=3,b=0;            b=doit.square( a);        Console.WriteLine(\"After square->a={0},b={1}\",a,b);//a=3,b=9;    }}

二、ref

ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

例如:

using System;class gump{    public double square(double x)    {        x=x*x;        return x;    }}class TestApp{    public static void Main()    {        gump doit=new gump();        double a=3;        double b=0;        Console.WriteLine(\"Before square->a={0},b={1}\",a,b);//a=3,b=0;            b=doit.square( ref a);        Console.WriteLine(\"After square->a={0},b={1}\",a,b);//a=9,b=9;    }}

传递到 ref 参数的参数必须最先初始化。这与 out 不同,后者的参数在传递之前不需要显式初始化。

三、out

out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用out 关键字。

using System;class gump{    public void math_routines(double x,out double half,out double squared,out double cubed)//可以是:public void math_routines(ref double x,out double half,out double squared,out double cubed)//但是,不可以这样:public void math_routines(out double x,out double half,out double squared,//out double cubed),对本例来说,因为输出的值要靠x赋值,所以x不能再为输出值    {        half=x/2;        squared=x*x;        cubed=x*x*x;    }}class TestApp{    public static void Main()    {        gump doit=new gump();        double x1=600;        double half1=0;        double squared1=0;        double cubed1=0;        [Page]        /*        double x1=600;        double half1;        double squared1;        double cubed1;        */        Console.WriteLine(\"Before method->x1={0}\",x1);        Console.WriteLine(\"half1={0}\",half1);          Console.WriteLine(\"squared1={0}\",squared1);        Console.WriteLine(\"cubed1={0}\",cubed1);        doit.math_rountines(x1,out half1,out squared1,out cubed1);  //此时的Out修饰的参数值均已经发生改变。            Console.WriteLine(\"After method->x1={0}\",x1);            Console.WriteLine(\"half1={0}\",half1);            Console.WriteLine(\"squared1={0}\",squared1);            Console.WriteLine(\"cubed1={0}\",cubed1);               }}

尽管作为 out 参数传递的变量不必在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。

class OutExample{    static void Method(out int i)    {        i = 44;    }     static void Main()    {        int value;        Method(out value);        // value is now 44    }}

四、区别:

1.ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。

2.使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

3.使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

4.out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

5.方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

感谢各位的阅读,以上就是"C#关键字in、out、ref的作用与区别是什么"的内容了,经过本文的学习后,相信大家对C#关键字in、out、ref的作用与区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

参数 方法 关键 关键字 变量 作用 C# 函数 过程 内容 学习 不同 可以通过 数值 时候 控制 输出 相似 两个 功效 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 互联网巨头科技公司 互联网科技未来 互联网科技公司官网 奇士达互联网科技 兼蜜互联网科技 互联网高科技企业 滨湖区互联网智能科技产品供应 济南华为互联网科技产业总部基地 常德市电业局互联网科技部 苏州五指互联网络科技有限 科技类公司包括互联网吗 迪庆互联网科技招生 四川慕妮娅互联网科技有限公司 2021互联网科技公司排名 互联网公司高科技产品 萌小萌互联网科技河南有限公司 互联网金融运营模式中的金融科技 易租星互联网科技有限公司 武汉亿视互联网科技有限公司 花魁咖啡 上海挚品互联网科技有限公司 互联网电商科技 互联网金融 金融科技 有木互联网科技 齐家互联网科技有限公司 互联网系的金融科技公司 厦门千工互联网科技有限公司 黑科技 体验场景 互联网大会 科技互联网公司两年变化
0