C# C如何将未知值变量(用户输入)传递给return方法

C# C如何将未知值变量(用户输入)传递给return方法,c#,C#,早上好/下午好 我很抱歉,我想澄清一下通过引用和价值传递的问题。如果我将变量值设置为0,则正在发布的程序可以工作,但在用户输入后不会重写。所以我相信这个问题已经过去了,但是我的教授说在这个项目中一切都应该是静态的 简短:如何在不使用void的情况下传递输入变量 我是新来的。这只是第三章,所以任何帮助都将是美妙的 namespace Lesson3 { class Program { public static void Main(string[] args) {

早上好/下午好

我很抱歉,我想澄清一下通过引用和价值传递的问题。如果我将变量值设置为0,则正在发布的程序可以工作,但在用户输入后不会重写。所以我相信这个问题已经过去了,但是我的教授说在这个项目中一切都应该是静态的

简短:如何在不使用void的情况下传递输入变量

我是新来的。这只是第三章,所以任何帮助都将是美妙的

namespace Lesson3
{

class Program
{
    public static void Main(string[] args)
    {




        // declarations 
        // 12 inches to a foot
        // 36 inches to a yard
        // 63360 inches per 1 mile
        double userInput= 0; // if "0" is removed the program will not function CS0165 error
        double feet = 12;
        double yards = 36;
        double miles = 63360;
        double ansFeet = userDivFeet(ref feet, ref userInput);
        double ansYards = userDivYards(ref yards, ref userInput);
        double ansMiles = userDivMiles(ref miles, ref userInput);


        Console.WriteLine("Please enter the number of inches to convert: ");
        userInput = Convert.ToInt32(Console.ReadLine());

        // output each calculation and display with console to hold the results
        WriteLine(userInput + " inches converts into " + ansFeet + " feet.");
        WriteLine(userInput + " inches converts into " + ansYards + " yards.");
        WriteLine(userInput + " inches converts into " + ansMiles + " miles.");
        Console.ReadKey();
    }


        public static double userDivFeet(ref double userInput, ref double feet)
    {
        return userInput / feet;
    }
    public static double userDivYards(ref double userInput, ref double yards)
    {
        return userInput / yards;
    }
    public static double userDivMiles(ref double userInput, ref double miles)

    {
        return userInput / miles;
    }




    }

}

之所以看不到任何更改,是因为您在获取用户输入之前调用了方法,所以userInput始终等于0,您应该在

userInput = Convert.ToInt32(Console.ReadLine());
看起来是这样的

public static void Main(string[] args)
{
    // declarations 
    // 12 inches to a foot
    // 36 inches to a yard
    // 63360 inches per 1 mile
    double userInput = 0; // if "0" is removed the program will not function CS0165 error
    double feet = 12;
    double yards = 36;
    double miles = 63360;

    Console.WriteLine("Please enter the number of inches to convert: ");
    userInput = Convert.ToInt32(Console.ReadLine());

    double ansFeet = userDivFeet(ref feet, ref userInput);
    double ansYards = userDivYards(ref yards, ref userInput);
    double ansMiles = userDivMiles(ref miles, ref userInput);

    // output each calculation and display with console to hold the results
    WriteLine(userInput + " inches converts into " + ansFeet + " feet.");
    WriteLine(userInput + " inches converts into " + ansYards + " yards.");
    WriteLine(userInput + " inches converts into " + ansMiles + " miles.");
    Console.ReadKey();
}
正如Polyfun所说的,你不需要使用ref,你的老师说它必须是静态的也是因为你直接从main调用这些方法

如果希望用户能够输入带有小数点(如1.25)的数字,则应将Convert.ToInt32更改为Convert.ToDouble


删除=0时出现CS0165错误,因为您试图在方法中使用未分配的值,现在在将值分配给userInput后方法被移动,您不应该再出现此错误。

在分配用户输入之前,您使用变量userInput调用您的方法。首先接受输入,然后调用方法

另外,您将userInput声明为double,但将实际用户输入解析为int。将其更改为将其解析为double

使用制度

第三课 {


}

提示:您不需要使用ref,而且您现在阅读userInput的地方已经太晚了。@Poly非常感谢您,我非常感谢您提供的提示!不需要使用ref。非常感谢大家。。。我正在分析一个Int,但我想要一个double。。。当我创作它的时候。。。。我认为一个人不可能只输入整数。如果其他任何人在以后的工作中引用此文件-抱歉,存在逻辑错误。脚、用户输入需要交换为用户输入/脚。结果得出结论,6000英寸是0.0045英尺,这是非常错误的非常感谢大家@元素不要忘记,如果答案解决了你的问题,你可以接受。啊,我投了赞成票,而不是接受!谢谢你的提醒!
internal class Program
{
    public static void Main(string[] args)
    {




        // declarations 
        // 12 inches to a foot
        // 36 inches to a yard
        // 63360 inches per 1 mile
        double userInput=0; // if "0" is removed the program will not function CS0165 error
        double feet = 12;
        double yards = 36;
        double miles = 63360;
        Console.WriteLine("Please enter the number of inches to convert: ");
        userInput = Convert.ToInt32(Console.ReadLine());
        double ansFeet = userDivFeet(ref feet, ref userInput);
        double ansYards = userDivYards(ref yards, ref userInput);
        double ansMiles = userDivMiles(ref miles, ref userInput);




        // output each calculation and display with console to hold the results
        Console.WriteLine(userInput + " inches converts into " + ansFeet + " feet.");

        Console.WriteLine(userInput + " inches converts into " + ansYards + " yards.");
        Console.WriteLine(userInput + " inches converts into " + ansMiles + " miles.");
        Console.ReadKey();
    }


    public static double userDivFeet(ref double userInput, ref double feet)
    {
        return userInput/feet;
    }

    public static double userDivYards(ref double userInput, ref double yards)
    {
        return userInput/yards;
    }

    public static double userDivMiles(ref double userInput, ref double miles)

    {
        return userInput/miles;
    }


}