以下是我遇到一些问题的代码块:
using System;
namespace TestProgram {
class Test {
static void Main() {
int number = 10;
MultiplyByTen(number);
Console.WriteLine(number);
Console.ReadKey(true);
}
static public void MultiplyByTen(int num) {
num *= 10;
}
}
}
当我运行这段代码时,我得到10作为输出而不是100.我的问题是:为什么会发生这种情况以及如何解决它? 谢谢你的帮助。
答案 0 :(得分:3)
问题是当变量号进入方法MultiplyByTen时,值被复制,而你在其中修改的变量实际上就是副本,因此原件没有改变。
试试这个:
public static void MultiplyByTen(ref int num)
{
num *= 10;
}
但请记住,您还必须使用ref关键字调用它。
static void Main()
{
int number = 10;
MultiplyByTen(ref number);//Notice the ref keyword here
Console.WriteLine(number);
Console.ReadKey(true);
}
答案 1 :(得分:1)
您需要将值返回给函数,并将返回值分配给数字。
static void Main()
{
int number = 10;
number = MultiplyByTen(number);
Console.WriteLine(number);
Console.ReadKey(true);
}
static public int MultiplyByTen(int num)
{
return num *= 10;
}
答案 2 :(得分:1)
使用您的实施:
using System;
namespace TestProgram {
class Test {
static void Main() {
int number = 10;
//MultiplyByTen(number);
//Console.WriteLine(number);
Console.WriteLine(MultiplyByTen(number));
Console.ReadKey(true);
}
static public int MultiplyByTen(int num) {
return num *= 10;
}
}
}