• 技术文章 >后端开发 >C#.Net教程

    C#难点逐个击破(1):ref参数传递

    黄舟黄舟2016-12-22 14:02:40原创921
    一般情况,方法的参数传递是通过值进行传递的,即一个对象作为参数传递给方法使用,该对象便进驻到该参数对象所在指针的内存空间(使用C来描述),也就是该对象在此位置创建了副本,当方法运行结束时,该副本将会被销毁;这种传递方式的使用占据了日常方法传参的绝大多数。

    另一种情况是引用传递,它与值传递方式不同,对象传递给方法时对方法参数并没有影响,仍然返回的是受原始参数取值影响的方法,即MethodInstance(ref _refValue)调用 Method(ref _arg)方法,但_refValue对Method无影响,返回的仍是_arg影响的结果。这点也能想到_arg必须在使用前赋值。

    示例:

    另一种情况是引用传递,它与值传递方式不同,对象传递给方法时对方法参数并没有影响,仍然返回的是受原始参数取值影响的方法,即MethodInstance(ref _refValue)调用 Method(ref _arg)方法,但_refValue对Method无影响,返回的仍是_arg影响的结果。这点也能想到_arg必须在使用前赋值。

    示例:

    using System; 
    
    /****************************** 
    * Chapter:C#难点逐个击破(一) 
    * Author:王洪剑 
    * Date:2010-1-11 
    * Blog:http://www.51obj.cn/ 
    * Email:walkingp@126.com 
    * Description:重点讲解值传递方式与引用传递方式 
    * ***************************/ 
    namespace Wang.TestRef 
    { 
    public class NormalClass 
    { 
    public void ShowNormalResult(string name) 
    { 
    name = "Wang Hongjian"; 
    Console.WriteLine(name); 
    } 
    } 
    public class RefClass 
    { 
    /// <summary> 
    /// 引用类型ref类 
    /// </summary> 
    /// <param name="name"></param> 
    public void ShowRefResult(ref string name) 
    { 
    name = "Wang Hongjian"; 
    Console.WriteLine(name); 
    } 
    } 
    class Program 
    { 
    static void Main(string[] args) 
    { 
    string _name = "Zhou Runfa";//传递参数 
    
    #region 值传递参数方式 
    NormalClass n = new NormalClass(); 
    n.ShowNormalResult(_name);//正常调用 
    #endregion 
    
    #region 引用传递参数方式 
    RefClass o = new RefClass(); 
    o.ShowRefResult(ref _name);//结果仍然为引用传递参数 
    Console.ReadKey(); 
    #endregion 
    } 
    } 
    }

    运行结果:

    111.png

    php入门到就业线上直播课:进入学习


    以上就是C#难点逐个击破(1):ref参数传递的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:C#,ref参数传递
    上一篇:C# 获取系统进程的用户名 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• c语言标识符有哪些类型• c语言中源文件编译后生成什么文件• c语言本身有没有输入输出语句• c语言中的标识符是由什么组成• c语言中关键字有多少个
    1/1

    PHP中文网