返回顶部
首页 > 资讯 > 精选 >C#关键字in、out、ref的作用与区别是什么
  • 410
分享到

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

2023-06-30 04:06:35 410人浏览 薄情痞子
摘要

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

这篇文章主要讲解了“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]                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    }}

四、区别:

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

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

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

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

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

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

--结束END--

本文标题: C#关键字in、out、ref的作用与区别是什么

本文链接: https://lsjlt.com/news/327396.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#关键字in、out、ref的作用与区别是什么
    这篇文章主要讲解了“C#关键字in、out、ref的作用与区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#关键字in、out、ref的作用与区别是什么”吧!简介:In:过程不会改...
    99+
    2023-06-30
  • C#关键字in、out、ref的作用与区别
    简介: In:过程不会改写In的内容 ,默认的传递方式,即向函数内部传送值。Out和out:传入的值不会被过程所读取,Out在传入的时候,参数的数值会清空,但过程可以写 。只出不进r...
    99+
    2024-04-02
  • c++ decltype关键字的作用是什么
    `decltype`关键字的主要作用是用于推断表达式的类型。它可以在编译时根据表达式的类型推导出相应的类型,并将其作为`declty...
    99+
    2023-10-12
    c++
  • c++ volatile关键字的作用是什么
    在C++中,volatile关键字的作用是告诉编译器不要对变量进行优化,即不要将变量缓存在寄存器中,应该直接从内存中读取或写入变量。...
    99+
    2023-10-28
    c++
  • c#关键字internal的作用是什么
    C#关键字internal用于指示一个类型(类,接口,结构体或枚举)只能在其包含的程序集中访问。这意味着,如果一个类型被声明为int...
    99+
    2024-04-02
  • c++ final关键字的作用是什么
    在C++中,final关键字用于指定类、成员函数或虚函数是最终的,不能被继承或重写。当一个类或者函数被声明为final时,它将不允许...
    99+
    2024-04-02
  • WPF与Silverlight的关键区别是什么
    小编给大家分享一下WPF与Silverlight的关键区别是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Silverlight刚诞生时,很多人只是简单的理解...
    99+
    2023-06-17
  • Vue3.0中Ref与Reactive的区别是什么
    这篇文章主要介绍“Vue3.0中Ref与Reactive的区别是什么”,在日常操作中,相信很多人在Vue3.0中Ref与Reactive的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3.0中...
    99+
    2023-06-20
  • Vue中Ref与Reactive的区别是什么
    今天小编给大家分享一下Vue中Ref与Reactive的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Ref与Re...
    99+
    2023-06-05
  • C# 中this关键字的作用是什么
    这篇文章给大家介绍C# 中this关键字的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。以下是 this 的常用用途:◆限定被相似的名称隐藏的成员◆将对象作为参数传递到其他方法◆声明索引器C# this关键字...
    99+
    2023-06-17
  • C# 中base关键字的作用是什么
    今天就跟大家聊聊有关C# 中base关键字的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# base关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法...
    99+
    2023-06-17
  • C#中 New关键字的作用是什么
    C#中 New关键字的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、在C#中,new这个关键字使用频率非常高,主要有3个功能:1)作为运算符用来创建一个对象和调用...
    99+
    2023-06-17
  • C++中explicit关键字的作用是什么
    本篇文章为大家展示了C++中explicit关键字的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对...
    99+
    2023-06-17
  • C# 中using关键字的作用是什么
    今天就跟大家聊聊有关C# 中using关键字的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C# using关键字微软MSDN上解释总共有三种用途:引用命名空间,这样就可以...
    99+
    2023-06-18
  • C# 中lock关键字的作用是什么
    这篇文章将为大家详细讲解有关C# 中lock关键字的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical se...
    99+
    2023-06-18
  • C#中that关键字的作用是什么
    C#中that关键字的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如果在C#增加that关键字,将会表示什么意思简单分析可以发现,C#增加that关...
    99+
    2023-06-18
  • c语言register关键字的作用是什么
    C语言中的register关键字用于向编译器建议将变量存储在寄存器中,以便更快地访问。它是一种优化技术,用于提高程序的执行速度。使用...
    99+
    2023-09-16
    c语言
  • c语言关键字static的作用是什么
    在C语言中,关键字static有以下几种作用:1. 静态变量:static关键字可以用于声明静态变量,静态变量存储在静态存储区,在程...
    99+
    2023-09-14
    c语言 static
  • C语言volatile关键字的作用是什么
    本篇内容介绍了“C语言volatile关键字的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写在前面版本信息:Linux操作系统,...
    99+
    2023-07-06
  • c语言volitate关键字的作用是什么
    在C语言中,volatile关键字用于告诉编译器,所修饰的变量可能会在程序的执行过程中被意外修改,因此编译器在优化代码时应该避免对这...
    99+
    2024-03-01
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作