LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#中的ref关键字

freeflydom
2025年2月18日 11:37 本文热度 475

值参数(Value Parameters)

1、传递的是参数的值(数据的副本)而不是原始数据本身。

2、函数内部对值参数的修改不会影响到原始数据。

3、通常用于传递基本数据类型(如整数、浮点数、布尔值)或不可变对象(如字符串、元组)。

4、值参数的传递是一种传值调用(Call by Value)。

示例代码

internal class Program

{

static void ShowDouble(int val)

{

val *= 2;

Console.WriteLine($"ShowDouble函数中val的值为:{val}");

}

static void Main(string[] args)

{

int val = 6;

Console.WriteLine($"Main函数中执行ShowDouble函数前val的值为:{val}");

ShowDouble(val);

Console.WriteLine($"Main函数中执行ShowDouble函数后val的值为:{val}");

}

}

运行结果,如下图所示:

把val作为一个参数,调用ShowDouble()并不影响Main()中val的值

那么如何改变val的值呢?

可以使用一个含返回值的函数

代码如下所示:

internal class Program

{

static int ShowDouble(int val)

{

val *= 2;

Console.WriteLine($"ShowDouble函数中val的值为:{val}");

return val;

}

static void Main(string[] args)

{

int val = 6;

Console.WriteLine($"Main函数中执行ShowDouble函数前val的值为:{val}");

val = ShowDouble(val);

Console.WriteLine($"Main函数中执行ShowDouble函数后val的值为:{val}");

}

}

运行结果,如下所示:

成功改变了参数的值,但是这种方式并不直观,且不能改变用作参数的多个变量的值(因为函数只有一个返回值),这时就可以通过引用来传递参数。

引用参数(Reference Parameters)

1、传递的是参数的引用(内存地址),直接操作原始数据。

2、函数内部对引用参数的修改会影响到原始数据。

3、通常用于传递可变对象(如列表、字典)或对象实例,以便在函数内部进行修改并在函数外部保持修改后的状态。

4、引用参数的传递是一种传址调用(Call by Reference)。

C#中使用ref关键字指定参数,代码如下所示:

internal class Program

{

static void ShowDouble(ref int val)

{

val *= 2;

Console.WriteLine($"ShowDouble函数中val的值为:{val}");        

}

static void Main(string[] args)

{

int val = 6;

Console.WriteLine($"Main函数中执行ShowDouble函数前val的值为:{val}");

ShowDouble(ref val);

Console.WriteLine($"Main函数中执行ShowDouble函数后val的值为:{val}");

}

}

运行结果,如下图所示:

要注意,不仅在函数的声明中要使用ref指定参数,如代码 static void ShowDouble(ref int val)所示,在函数的调用中,也要再次指定它,如代码 ShowDouble(ref val)所示。

使用ref的限制

1、函数可能会改变引用参数的值,所以必须在函数调用中要使用“非常量”变量

 const int val = 6;

这种写法,编译器会报错,如下图所示:

2、必须使用初始化过的变量。C#不允许假定ref参数在使用它的函数中初始化。

  int val;
 ShowDouble(ref val);

这种写法,编译器也会报错,如下图所示:

转自https://www.cnblogs.com/mingupupu/p/17864054.html


该文章在 2025/2/18 11:37:03 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved