有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]

Posted

技术标签:

【中文标题】有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]【英文标题】:Can someone explain me the logic behind this sample c# code? I am not getting the answer 10 for the years [duplicate] 【发布时间】:2018-10-29 16:01:29 【问题描述】:
private void assign(int num)

   num = 10;


private void doSomething()

   num = 0;
   assign(num);
   MessageBox.Show(num.ToString());

我得到的答案是 0 而不是 10。有人可以解释这是怎么发生的吗?我的目标是修改变量。

【问题讨论】:

2 个选项:将您的 num 作为ref 传递,或使用return 值。都是关键字,试试msdn看看效果如何 docs.microsoft.com/en-us/dotnet/csharp/language-reference/… docs.microsoft.com/en-us/dotnet/csharp/language-reference/… @xanatos: 确实......它必须是否则这不会编译......虽然放错了也表明这不是实际的代码。 【参考方案1】:

从 cmets 你有 2 个选项,ref 和 out

1)

private void assign(ref int num)

   num = 10;


private void doSomething()

   int num = 0;
   assign(ref num);
   MessageBox.Show(num.ToString());

2)

private int assign(out int num)

   num = 10;


private void doSomething()

   var num = 0;
   assign(out num);
   MessageBox.Show(num.ToString());

通常这是通过返回值来完成的:

private int assign(int input)

   //some complicated calculation on input.
   return 10;


private void doSomething()

   var num = 0;
   num = assign();
   MessageBox.Show(num.ToString());

【讨论】:

非常感谢 Stefan...这有效。实际上,我根据此方法中的某些条件返回一个布尔值,因此我无法返回整数值。感谢您的帮助..

以上是关于有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释一下attr吗?

有人可以向我解释一下逻辑回归中成本函数和梯度下降方程之间的区别吗?

有人可以解释一下这个 c++ 代码有啥问题并提供解决方案吗

有人可以解释 C++ FAILED 函数吗?

有人可以解释一下这个与 Js 回调函数有关的代码吗?我对这段代码很困惑,可能是因为我是初学者。问题是:

有人可以帮我解释一些逻辑吗?