C# 使用参考参数

C# 使用参考参数,c#,C#,我正在自学C#,希望能得到一些帮助。我想创建一个简单的控制台程序,允许用户输入一个翻倍的数字。它说Main方法中的变量result是未赋值的,但是,我做错了什么 using System; class Program { private static void Double(ref int num, ref int result) { result = num * 2; } private static int readNumber(stri

我正在自学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();
    }
}

编译器对您大喊大叫,因为它想强制您在将变量传递给方法调用之前初始化变量

意思是:

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)提高代码的可读性,更好地表达您的意图。

'

private static double Double(int num)
{
    return num * 2;
}

现在,您只需在方法签名中调用
result=Double(num)

您想要的
out int result
。但大多数情况下,我都不会同时使用
ref
out
。。是的,它说Main方法中的变量结果是未赋值的。是的,但我想练习
ref
使用
out
而不是
ref
。更好的是,如果不需要的话,根本不使用它们。并且删除参数
result
,它现在是不必要的/令人困惑的