我自己在书上学习C#,并希望得到一些帮助。我想创建一个简单的控制台程序,允许用户输入要加倍的数字。它说Main方法中的变量result
是未分配的,但是,我做错了什么?
using System;
class Program
{
private static void Double(ref int num, ref int result)
{
result = num * 2;
}
private static int readNumber(string question)
{
Console.Write(question);
string ans = Console.ReadLine();
int number = int.Parse(ans);
return number;
}
public static void Main()
{
int num, result;
num = readNumber("Enter an integer to be doubled: ");
Double(ref num, ref result);
Console.WriteLine("The double of {0} is {1}", num, result);
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
}
}
答案 0 :(得分:5)
编译器正在大吼大叫,因为它希望在将变量传递给方法调用之前强制初始化变量。
含义:
int num, result;
应该是:
int num = 0;
int result = 0;
通过简单地使用方法的返回值,可能有更好的方法来完成您正在尝试的操作,而根本没有任何ref
参数:
private static int Double(int num)
{
return num * 2;
}
并按照这样消费:
public static void Main()
{
int num = readNumber("Enter an integer to be doubled: ");
int result = Double(num);
Console.WriteLine("The double of {0} is {1}", num, result);
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
}
这甚至可以(IMO)提高代码的可读性并更好地传达您的意图。
答案 1 :(得分:0)
'你为什么不简单地改变方法signatur来返回双重而不是ref
?
private static double Double(int num)
{
return num * 2;
}
现在您只需致电result = Double(num)
。