gpt4 book ai didi

c# - 装箱 int 不会将其转换为引用类型?

转载 作者:行者123 更新时间:2023-11-30 19:08:47 28 4
gpt4 key购买 nike

如果我错了,请纠正我,将值类型装箱转换为引用类型,那么为什么以下代码给出 10 输出而不是 12?

public static void fun(Object obj)
{
obj =12;
}
static void Main(string[] args)
{
int value =10;
Object obj = value;
fun(obj);
Console.WriteLine((int)obj);
}

最佳答案

因为当您调用 fun 时,您实际上并没有修改 Main 方法中 obj 的值。该值被赋予 fun 并在那里且仅在那里更改,因为它本质上是该变量的副本,因为它是按值而不是按引用传递的。

要么使用ref关键字:

public static void fun(ref Object obj)
{
obj = 12;
}
static void Main(string[] args)
{
int value = 10;
Object obj = value;
fun(ref obj);
Console.WriteLine((int)obj);
}

或者让您的有趣方法返回新值:

public static Object fun(Object obj)
{
obj = 12;
return obj;
}
static void Main(string[] args)
{
int value = 10;
Object obj = value;
obj = fun(obj);
Console.WriteLine((int)obj);
}

关于c# - 装箱 int 不会将其转换为引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43997010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com