将变量通过函数传递给main()

时间:2011-09-25 18:11:05

标签: c#

我对C#很新,但我每天都在学习越来越多。今天,我正在尝试构建一个简单的控制台计算器,需要帮助将函数中的变量传递给Main(),这样我就可以在if-else中使用它来确定应该执行哪个函数。

public static void Main(string[] args)
    {
        int decision = Introduction();
        Console.Clear();
        Console.WriteLine(decision);
        Console.ReadLine();
    }

    public static int Introduction()
    {
        int decision = 0;

        while (decision < 1 || decision > 7)
        {
            Console.Clear();
            Console.WriteLine("Advanced Math Calculations 1.0");
            Console.WriteLine("==========================");
            Console.WriteLine("What function would you like to perform?");
            Console.WriteLine("Press 1 for Addition ++++");
            Console.WriteLine("Press 2 for Subtraction -----");
            Console.WriteLine("Press 3 for Multiplication ****");
            Console.WriteLine("Press 4 for Division ////");
            Console.WriteLine("Press 5 for calculating the Perimeter of a rectangle (x/y)");
            Console.WriteLine("Press 6 for calculating the Volume of an object (x/y/z)");
            Console.WriteLine("Press 7 for calculating the standard deviation of a set of 10 numbers");
            decision = int.Parse(Console.ReadLine());

                    if (decision < 1 || decision > 7)
                        {
                            decision = 0;
                            Console.WriteLine("Please select a function from the list.  Press Enter to reselect.");
                            Console.ReadLine();
                        }
                    else
                        {
                            break;
                        }

        }
        return decision;
    }

当我尝试在Main()中使用决策时,它说“在当前上下文中不存在名称决定”。

我很难过,并试图谷歌搜索无济于事。

干杯

SUCCESS!

3 个答案:

答案 0 :(得分:1)

Introduction返回值。该值是方法的本地值,并在其他地方使用它,您需要返回它并分配给局部变量。或者,你可以使decision成为一个静态类变量,但这不是一个特别好的做法,至少在这种情况下。 Introduction方法(不是特别好的名称,IMO,它应该是GetCalculationType()因为它正在做的事情)通常不应该有任何副作用。

public static void Main( string[] args )
{

     int decision = Introduction();

     ...

}

public static int Introduction()
{
    int decision = 0;

    ...

    return decision;
}

答案 1 :(得分:1)

Main()是您应用的入口点。然后它调用您的方法Introduction(),在堆栈上添加一个新的堆栈帧。因为您在Introduction方法中声明了决策变量,所以Main方法不知道它。

如果您在两种方法之外声明您的决策变量,您应该能够从以下任何一个引用它:

int decision;

static void Main(string[] args)
{
   // code here
}

static void Introduction()
{
   // code here
}

答案 2 :(得分:0)

您不能在main中使用decision变量,因为它是函数 Introduction的本地变量。
您可以使decision成为静态类变量,但更好的方法是从Introduction返回值并将其分配给main中的局部变量。