zoukankan      html  css  js  c++  java
  • C#方法参数--值参数,引用参数,输出参数

    值参数:

    使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作:

    在栈中为形参分配空间;

    复制实参到形参。

    注意:一个值参数的实参不一定是变量,它可以是任何能够计算成相应数据类型的表达式。

    在把变量用作实参之前,变量必须被赋值(除非是输出参数,这个稍后介绍),对于引用类型,变量可以设置成实际引用或者Null。

    引用参数:

    • 使用引用参数时,必须在方法的申明和调用中都使用关键字ref修饰符。
    • 实参必须是变量,在用作实参前必须被赋值。如果是引用类型的变量,可以赋值为一个引用或者null值。

    注意:对于值参数,系统在栈上为形参分配内存,相反对于引用参数:

    形参的参数名,看起来就好象是实参变量的别名,也就是说,他们指向的是相同的内存位置。

    由于形参名和实参名的行为,就好象指向相同的内存位置,所以在方法的执行过程中,对形参作的任何改变,在方法完成后依然有效(表现在实参变量上)。

    注意:在方法的声明和调用上都使用关键字ref.

    输出参数

    输出参数用于从方法体内,把数据传出到调用代码,他们非常类似引用参数,输出参数的要求如下:

    必须在声明和调用中都使用修饰符。输出参数的修饰符是out而不是ref.

    和引用参数类似,实参必须是变量,而不能是其他类型的表达式。这也是有道理的,因为方法需要内存位置来保存返回值。

    就像引用参数,输出参数的形参担当实参的别名。方法内对形参的任何改变,在方法执行完成后,通过实参变量都是可见的。

    不同的是,输出参数的要求是:

    在方法内部,输出参数在被读取之前必须被赋值。这意味着,参数的初始值是无关的,而且没有必要在方法调用之前为实参赋值;

    在方法返回之前,方法内部的任何贯穿路径的可能路径,都必须为所有输出参数进行一次赋值。

     

     

  • 相关阅读:
    iOS开发那些事-iOS6苹果地图有用开发
    Partition List -- LeetCode
    C++11:强类型枚举(enum)
    数据绑定(八)使用Binding的RelativeSource
    对于流程优化的处理器架构
    Linux/UNIX流程关系
    《炉石传说》建筑设计欣赏(6):卡&在执行数据时,组织能力
    采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址
    [Linux]scp 命令远程复制
    从头开始编写项目Makefile(八):型号规则
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/4852370.html
Copyright © 2011-2022 走看看