iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#关键字in、out、ref的作用与区别
  • 369
分享到

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

2024-04-02 19:04:59 369人浏览 八月长安
摘要

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

简介:

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
    }
}

四、区别:

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的作用与区别,希望对大家有所帮助。在此也非常感谢大家对编程网网站的支持!

--结束END--

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

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#关键字in、out、ref的作用与区别
    简介: In:过程不会改写In的内容 ,默认的传递方式,即向函数内部传送值。Out和out:传入的值不会被过程所读取,Out在传入的时候,参数的数值会清空,但过程可以写 。只出不进r...
    99+
    2024-04-02
  • C#关键字in、out、ref的作用与区别是什么
    这篇文章主要讲解了“C#关键字in、out、ref的作用与区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#关键字in、out、ref的作用与区别是什么”吧!简介:In:过程不会改...
    99+
    2023-06-30
  • C#中ref关键字的用法
    在C#中,如果在方法参数前面加上ref关键字,说明参数传递的是引用,而不是值。如何理解呢? 参数是简单类型的例子 static void Main(string[] ...
    99+
    2022-11-13
    C# ref关键字
  • final与static关键字有哪些区别
    这篇文章主要为大家展示了“final与static关键字有哪些区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“final与static关键字有哪些区别”这篇文章吧。都可以修饰类、方法、成员变量...
    99+
    2023-06-02
  • C语言volatile关键字的作用与示例
    目录写在前面volatile和内联汇编的volatile的选择写在前面 版本信息:Linux操作系统,x86架构,Linux操作系统下GCC9.3.1版本。GCC 9.3.0手册。 ...
    99+
    2023-05-15
    C语言volatile关键字 C语言volatile
  • c++中inline关键字的作用
    c++ 中 inline 关键字指示编译器在可能的情况下将函数内联。作用有:减少函数调用的开销,提高频繁调用的函数性能。改善代码可读性。提高编译时间。最佳实践:将频繁调用的小型函数标记为...
    99+
    2024-05-12
    c++ 代码可读性
  • c#中this关键字的作用
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • c++中static关键字的作用
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 关键字const和readonly的区别
    关键字const和readonly都用于声明只读变量或只读属性,但它们的用法和作用有所不同。1. const关键字:- 可以用于变量...
    99+
    2023-09-01
    区别
  • 详解JS中continue关键字和break关键字的区别
    目录1.框架2.简单介绍3.代码演示4.演示break1.框架 <!DOCTYPE html> <html> <head> ...
    99+
    2022-11-13
    JS continue break区别 JS continue break
  • MySQL having关键字详解、与where的区别
    1、having关键字概览 1.1、作用 对查询的数据进行筛选 1.2、having关键字产生的原因 使用where对查询的数据进行筛选时,where子句中无法使用聚合函数,所以引出havin ...
    99+
    2023-10-25
    mysql 数据库 java
  • ES6 关键字 let 和 ES5 及关键字 var 的区别解析
    目录var 关键字let 关键字补充var 关键字 在 ES5 及以前,通过var在块级作用域中声明的变量,外边也可以访问。块级作用域就是一对{}的作用域;块级作用域可以是控制语句的...
    99+
    2024-04-02
  • java final 和instanceof 关键字的区别
    final 可以适用的范围:修饰类:使用这种修饰符的类无法被继承 修饰函数:被修饰的不能被重写 修饰属性:1.final修饰的成员变量是常量,值不能被修改  &n...
    99+
    2022-11-15
    java final instanceof
  • 详细介绍Java关键字throw throws Throwable的用法与区别
    目录1. Throwable1.1 扩展-Error1.2 扩展-Exception2. throws2.1 扩展3. throw3.1 扩展4. 总结throw,意为“...
    99+
    2024-04-02
  • c++ decltype关键字的作用是什么
    `decltype`关键字的主要作用是用于推断表达式的类型。它可以在编译时根据表达式的类型推导出相应的类型,并将其作为`declty...
    99+
    2023-10-12
    c++
  • c语言中typedef关键字的作用
    c语言中typedef关键字的作用是定义类型别名。它创建已存在数据类型的新名称,增强代码可读性和可维护性,包括:创建类型别名数据类型重用增强代码可读性提高代码可维护性 C语言中type...
    99+
    2024-05-10
    c语言 代码可读性 typedef
  • c语言中const关键字的作用
    const关键字在c语言中用于修饰变量或函数,使其值或行为在程序执行期间保持不变。它可以修饰变量(使其成为常量),防止意外修改数据,提高程序安全性。此外,const还可以修饰函数,确保其...
    99+
    2024-05-10
    c语言 敏感数据 代码可读性
  • 详解C++中inline关键字的作用
    目录inline关键字:目的:原理:注意事项:总结 inline关键字: 目的: 在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题。 原理: 调用函数的...
    99+
    2024-04-02
  • C++中的volatile关键字及其作用
    volatile是C语言的一个关键字,该关键字的作用是保持内存的可见性 例子: 我们对2号信号进行了捕捉,当该进程收到2号信号时会将全局变量flag由0置1, 也就是说,在进程收到2...
    99+
    2023-05-16
    C++ volatile关键字 C++ volatile关键字的作用
  • c++ volatile关键字的作用是什么
    在C++中,volatile关键字的作用是告诉编译器不要对变量进行优化,即不要将变量缓存在寄存器中,应该直接从内存中读取或写入变量。...
    99+
    2023-10-28
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作