欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

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

时间:2021-05-07 10:47:29|栏目:.NET代码|点击:
一般情况,方法的参数传递是通过值进行传递的,即一个对象作为参数传递给方法使用,该对象便进驻到该参数对象所在指针的内存空间(使用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
}
}
}

运行结果:

上一篇:分享Visual Studio原生开发的10个调试技巧(2)

栏    目:.NET代码

下一篇:C#实现把彩色图片灰度化代码分享

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

本文地址:http://www.codeinn.net/misctech/116257.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有