返回函数的值而不将其赋值给变量

时间:2016-08-01 18:38:37

标签: c#

所以我要做的是获取用户输入列表并将它们直接放入数组中。我想这样做而不为每个输入分配一个变量,因为可能有数百个。

        static void writeAndWait(String statement, int millisecondsToWait)
    {
        Console.WriteLine(statement);
        Thread.Sleep(millisecondsToWait);
        return;
    }
    static void Main(string[] args)
    {
        //I am using ArrayLists because they will store as many values as needed wether it be 1 or 1,000,000 or more
        ArrayList Name; //Declaring Name  
        ArrayList Time; //Declaring Time
        ArrayList Path; //Declaring Path
        Name = new ArrayList(); //Name will be used to store the names of the timers the user inputs
        Time = new ArrayList(); //Time will be used to store the times of the timers the user inputs
        Path = new ArrayList(); //Path will be used to store the path line of the timers the user inuts;

        writeAndWait("Hello, if you want to add timers all you need to do is type a name and press enter, say how long you want the timer to run for in minutes, and then add a number 1-10 any timers with the same number at the end will run sycrnasly, and any timers with diferant nubers will run async", 2000);
        Name.Add(Console.ReadKey().ToString());
        Console.WriteLine(Name[0]);
    }

Console.WriteLine只返回'Console.ReadKey()。ToString())

我希望它返回用户输入的密钥。或者Console.ReadKey的返回值

1 个答案:

答案 0 :(得分:0)

不确定你在这里问什么,但使用结构将阻止你需要维护单独的数组。如果你实际上有一个动态数量的参数,我可以修改这个答案。

public struct TimerDescriptor
{
    public string Name;
    public string Time;
    public string Path;

    public static bool TryParse(string text, out TimerDescriptor value)
    {
        //check for empty text
        if (string.IsNullOrWhiteSpace(text))
        {
            value = default(TimerDescriptor);
            return false;
        }

        //check for wrong number of arguments
        var split = text.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries);
        if (split.Length != 3)
        {
            value = default(TimerDescriptor);
            return false;
        }

        value = new TimerDescriptor
        {
            Name = split[0],
            Time = split[1],
            Path = split[2]
        };

        return true;
    }

    public override string ToString()
    {
        return Name + ' ' + Time + ' ' + Path;
    }
}

static void writeAndWait(String statement, int millisecondsToWait)
{
    Console.WriteLine(statement);
    Thread.Sleep(millisecondsToWait);
}
static void Main(string[] args)
{
    //I am using ArrayLists because they will store as many values as needed wether it be 1 or 1,000,000 or more
    var timerDescriptors = new List<TimerDescriptor>();

    writeAndWait("Hello, if you want to add timers all you need to do is type a name and press enter, say how long you want the timer to run for in minutes, and then add a number 1-10 any timers with the same number at the end will run sycrnasly, and any timers with diferant nubers will run async", 2000);

    var line = Console.ReadLine();
    TimerDescriptor descriptor;
    if (TimerDescriptor.TryParse(line, out descriptor))
    {
        timerDescriptors.Add(descriptor);
        Console.WriteLine(descriptor);
    }
    else Console.WriteLine("Syntax error: wrong number of arguments.  The syntax is: {Name} {Time} {Path} without the curly braces.");
}