从Main()函数内的方法调用值

时间:2013-10-13 15:57:22

标签: c#

我试图从Main()方法中调用一个名为GetInputstring的方法中的值,然后继续执行下一步。 我被问到如何获得价值myInt并继续前进。

myInt (其中有两个*左右)在Main()中是获取错误的地方。

    static void Main(string[] args)
    {

        GetInputstring(**myInt**);

        if (**myInt** <= 0)
        {
            Write1(**myInt**);
        }
        else
        {
            Write2(**myInt**);
        }
        Console.ReadKey();
    }

    public int GetInputstring(int myInt)
    {
        string myInput;
        //int myInt;

        Console.Write("Please enter a number: ");
        myInput = Console.ReadLine();

        myInt = Int32.Parse(myInput);
        return myInt;            
    }

    static void Write1(int myInt)
    {
        while (myInt <= 0)
        {
            Console.WriteLine("{0}", myInt++);
        }
    }

    static void Write2(int myInt)
    {
        while (myInt >= 0)
        {
            Console.WriteLine("{0}", myInt--);
        }
    }

2 个答案:

答案 0 :(得分:0)

MyInt 是您的参数(传递给您的方法的值)并且未初始化。此外,你没有捕获你的返回值(应该是myInt)

您还需要将方法设置为静态,以便从静态方法调用它们,或者创建类的实例并在其上调用方法

这就是你如何得到你想要的东西:

static void Main(string[] args)
{

    int myInt = GetInputstring(); //MyInt gets set with your return value 

    if (myInt <= 0)
    {
        Write1(myInt);
    }
    else
    {
        Write2(myInt);
    }
    Console.ReadKey();
}

public static int GetInputstring() //Deleted parameter because you don't need it.
{
    string myInput;
    //int myInt;

    Console.Write("Please enter a number: ");
    myInput = Console.ReadLine();

    int myInt = Int32.Parse(myInput);
    return myInt;            
}

答案 1 :(得分:0)

您需要初始化myInt变量并将其存储在本地或全局范围内。使用此变量,您需要使用从GetInputString()获得的值来设置它,因为您没有将int作为ref传递,它不会在方法中分配。您还需要将方法设置为静态,以便在不创建实例的情况下从Main调用它们,例如:public static int GetInputstring()

int myInt = 0;
myInt = GetInputstring(myInt);

if (myInt <= 0)
{
    Write1(myInt);
}
else
{
    Write2(myInt);
}
Console.ReadKey();

或者(最好),你可以让GetInputString()分配值,因为它不需要myInt作为参数传递。

static void Main(string[] args)
{
    int myInt = GetInputstring();

    if (myInt <= 0)
    {
        Write1(myInt);
    }
    else
    {
        Write2(myInt);
    }
    Console.ReadKey();
}

public static int GetInputstring()
{
    Console.Write("Please enter a number: ");
    string myInput = Console.ReadLine();
    return Int32.Parse(myInput);            
}