时间:2021-05-20
一般情况,方法的参数传递是通过值进行传递的,即一个对象作为参数传递给方法使用,该对象便进驻到该参数对象所在指针的内存空间(使用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://
* 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
}
}
}
运行结果:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#中Out与Ref的区别,可以加深C#程序设计人员对Out和Ref用法的理解,具体分析如下:一、区别分析:Out和Ref作为参数传递到方法体中,
在C#中,在次函数中调用时改变了其中的数值,主函数中也将发生改变ref关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。总结
将C语言封装成函数dll供C#端调用,需要传递的byte数组作为函数参数来传递。1、打开VisualStudio2017创建一个C的dll工程;取名为Dll12
将C语言封装成函数dll供C#端调用,需要传递的byte数组作为函数参数来传递。1、打开VisualStudio2017创建一个C的dll工程;取名为Dll12