C#输入系统 - 由于'{method}'返回void,因此返回关键字后面不能跟一个对象表达式

时间:2013-11-16 15:06:05

标签: c#

尝试在这里进行一些高级文本冒险,我有一个库存类。 (不是错误),一切都很好! 我正在尝试实现输入的功能。它只是导致输入,然后将参数返回给该类。我觉得这很容易。原来一个'void'方法无法返回一些东西。我当时不知道应该用什么 我在谷歌搜索了一下但找不到谷歌,这里的答案都是XML或更有经验的程序员。还有一些更简单,但没有答案。

这是我的程序类

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
    }
}

我越来越理解脚本了,只是通过提问和搜索谷歌,我真的很喜欢Stackoverflow上的人!谢谢大家的帮助!

呃......我怎么去做呢? 方法不多..而且我不知道该怎么办。

3 个答案:

答案 0 :(得分:3)

  

原来一个'void'方法无法返回一些东西。我当时不知道应该用什么。

您应该使用声明的方法来返回您想要返回的信息类型!当方法为void时,这意味着它不是意味着返回任何内容。

在这种情况下,您似乎正在尝试返回args的值,这是一个string变量,因此您需要:

public static string input()

此外:

  • 您应该关注.NET naming conventions
  • 你的args变量没有理由是静态的 - 它会更好地作为你方法中的局部变量
  • 在我看来,
  • args无论如何都是这个变量的奇怪名称。鉴于您要求命令,为什么不使用command作为变量名?

我建议你阅读MSDN page on methods或者阅读一本关于C#的好书,以了解有关返回类型,参数等的更多信息。

答案 1 :(得分:1)

来自void (C# Reference)‎

  

当用作方法的返回类型时,void指定   方法不返回值。

但是你的input方法返回一个值,所以..

Console.ReadLine()方法会重新调整string,因此您的args看起来像string。这就是您应该将返回类型更改为string之类的原因;

public static string input()
{

}

答案 2 :(得分:1)

您将args声明为string类型,这就是您应该返回的内容:

static public string input()
{
    ...
    return args;
}