我正在自己学习C#,并希望得到一些帮助.我想创建一个简单的控制台程序,允许用户输入要加倍的数字.它说result
Main方法中的变量是未分配的,但是,我做错了什么?
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(); } }
Yuval Itzcha.. 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)增强代码的可读性并更好地传达您的意图.
编译器正在大吼大叫,因为它希望在将变量传递给方法调用之前强制初始化变量.
含义:
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)增强代码的可读性并更好地传达您的意图.