C# Input system Since '{method}' returns void, a return keyword must not be followed by an object expression

Trying a shot to a little advanced text adventure here, I have an inventory class. (isn't an error) and it all works great! I'm trying to implement a feature of an input. That it just leads to input, and then returns the arguments back to that class. I thought it would be easy. Turned out a 'void' method can't return something. I don't know what I should use then.
I searched a bit on Google but can't find google, and the answers on here are all XML or more experienced programmers. There are also a few simpler once, but those are unanswered.

This is my Program class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Inventory_system_test
{
    class Program
    {
        //Objects
        static private Inventory inv = new Inventory();

        //strings
        static private string args;
        //variables



        static void Main(string[] args)
        {
            Write("Do you want to kill dave?");
            input();
        }

        static public void input()
        {

            bool done = false;

            Writen("Enter a command: ");
            args = Console.ReadLine();
            while (!done)
            {
                if (args.Contains("add inv "))
                {
                    args = args.Split()[2];
                    inv.additem(args);

                }
                else if (args.Contains("remove inv "))
                {
                    args = args.Split()[2];
                    inv.removeitem(args);

                }
                else if (args.Contains("see inv"))
                {
                    Write("INVENTORY:");
                    inv.getinv();
                }
                else if (args == "close")
                {
                    Environment.Exit(0);
                }
                else
                {
                    done = true;
                    return args; ///**Here is the error ofcourse.**
                }

            }
        } //Input files things :)


        #region Easy Commands (Write, Sleep)
        //Write to console
        public static void Write(string writev)
        {
            Console.WriteLine(writev);
        }

        //Sleep for 'int sleeptime' in milliseconds
        public static void Sleep(int sleeptime)
        {
            System.Threading.Thread.Sleep(sleeptime);
        }

        public static void Writen(string writen)
        {
            Console.Write(writen);
        }
        #endregion
    }
}

I'm getting to understand scripting more and more, and that's just by asking question and searching Googles, I really love the people on Stackoverflow! Thank you all for your help!

So uh.. how would I go and do this? There aren't many methods.. And I wouldn't know what to do from here.

Jon Skeet
people
quotationmark

Turned out a 'void' method can't return something. I don't know what I should use then.

You should use a method which is declared to return the kind of information you want to return! When a method is void, that specifically means it's not meant to return anything.

In this case it looks like you're trying to return the value of args, which is a string variable, so you want:

public static string input()

Additionally:

  • You should follow .NET naming conventions
  • There's no reason for your args variable to be static - it would better as a local variable within your method
  • args is an odd name for this variable anyway, in my view. Given that you're asking for a command, why not use command as the variable name?

I suggest you read the MSDN page on methods or look in a good book about C# to learn more about return types, parameters and so on.

people

See more on this question at Stackoverflow