c#函数返回值是传值还是传地址

 GPT生成,仅记录答案,未核实正确性

数据类型区分见C# 数据类型 | 菜鸟教程


在C#中,函数的返回值是传值还是传地址,取决于返回值的类型。具体来说:

1. 值类型(Value Types)

值类型在函数返回时是按值传递的。也就是说,函数返回的是该值的一个副本。

常见的值类型包括:

  • 基本数据类型:int, float, double, bool, char
  • 结构体(struct
  • 枚举(enum

示例:

public int GetNumber()
{
    int number = 42;
    return number; // 返回值类型,传值
}

void Start()
{
    int myNumber = GetNumber();
    myNumber = 100; // 修改myNumber不会影响函数内的number变量
}

在这个例子中,GetNumber() 函数返回一个 int 类型,myNumber 变量接收到的是 number 的副本。因此修改 myNumber 不会影响 GetNumber 中的 number

2. 引用类型(Reference Types)

引用类型在函数返回时是按引用传递的。也就是说,函数返回的是该对象的内存地址,因此对返回值的修改会影响原始对象。

常见的引用类型包括:

  • 类(class
  • 数组
  • 字符串(尽管字符串有一些特殊的行为,像是不可变性)
  • 委托(delegate
  • 接口(interface

示例:

public class Player
{
    public string name;
}

public Player GetPlayer()
{
    Player player = new Player();
    player.name = "Hero";
    return player; // 返回引用类型,传地址
}

void Start()
{
    Player myPlayer = GetPlayer();
    myPlayer.name = "Warrior"; // 修改myPlayer.name会影响GetPlayer函数返回的对象
}

在这个例子中,GetPlayer() 函数返回一个 Player 对象的引用。因此,当你修改 myPlayer.name 时,实际修改的是函数返回的那个 Player 对象的 name 属性。

3. 总结

  • 值类型:返回时传值,传递的是该值的副本。对返回值的修改不会影响原始变量。
  • 引用类型:返回时传引用,传递的是对象的内存地址。对返回值的修改会影响原始对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值