...是一种类型,但像变量一样使用

时间:2012-11-06 11:04:28

标签: c#

我的想法是创建一个基于文本的冒险游戏。

我正在尝试在我的主类中使用一个类。 在我努力的时候,它给了我错误:

'MyAdventure.Window'是'type',但用作'变量'

我不确定如何解决这个问题。我尝试创建一个新的类实例,但似乎没有用。 我对此很新,但有人可以帮忙吗?

提前致谢。

这是我的主类(Program.cs)的代码:

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

namespace MyAdventure
{
class Program
{
    static void Main(string[] args)
    {

        Console.WriteLine("You cannot feel your body. You don't know where you are.\nThe room you're in is dark. You cannot see much.");
        Console.WriteLine("You decide to stand up, and take a look around. You see a door and a window.\nWhich do you check out first?");
        Console.WriteLine("A. Window\nB. Door");

        string userInput = Console.ReadLine();
        //Window theWindow = new Window();

        if (userInput.StartsWith("A", StringComparison.CurrentCultureIgnoreCase))
        {
            Window();
        }
        else if (userInput.StartsWith("B", StringComparison.CurrentCultureIgnoreCase))
        {
            Console.WriteLine("You chose the door.");
        }

        Console.ReadKey();

    }
}

}

这是其他类Window.cs的代码(到目前为止):

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

namespace MyAdventure
{
public class Window
{
    static void theWindow()
    {

        Console.WriteLine("You approach the window.");
        Console.ReadKey();

    }
}

}

3 个答案:

答案 0 :(得分:3)

调用类的静态方法的正确语法如下

   if (userInput.StartsWith("A", StringComparison.CurrentCultureIgnoreCase))
   {
        Window.theWindow();
   }

你不能简单地使用类的名称,但是你应该指定要调用的静态方法(可能有很多方法)

Calling static methods

此外,'theWindow'方法应公开,否则为private by default inside a class

  

类成员和结构成员的访问级别,包括嵌套   类和结构,默认是私有的

public static void theWindow()
{
    Console.WriteLine("You approach the window.");
    Console.ReadKey();
}

答案 1 :(得分:0)

您可能需要致电

....
...
if (userInput.StartsWith("A", StringComparison.CurrentCultureIgnoreCase))
{
      Window.theWindow();
}
...
...

答案 2 :(得分:0)

theWindow()是一种静态方法。静态成员的调用类似于ClassName.MethodName(),在您的情况下为Window.theWindow()

当您执行Window theWindow = new Window();时,您正在创建Window类的实例。静态成员无法从类的实例访问。

要从实例调用该方法,您需要删除static修饰符

public class Window
{
    public void theWindow()
    {
        Console.WriteLine("You approach the window.");
        Console.ReadKey();

    }
}

用法

Window w = new Window(); //creating an instance of Window
w.theWindow();