0

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

我正在尝试在我的主要课程中使用一个课程。当我尝试这样做时,它给了我错误:

“MyAdventure.Window”是一种“类型”,但用作“变量”

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

提前致谢。

这是我的主类(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();

    }
}

}

4

3 回答 3

3

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

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

您不能只使用类的名称,但您应该指定要调用的静态方法(可能是多种方法中的一种)

调用静态方法

此外,方法“theWindow”应该公开,否则默认情况下在类中是私有的

类成员和结构成员(包括嵌套类和结构)的访问级别默认为私有

public static void theWindow()
{
    Console.WriteLine("You approach the window.");
    Console.ReadKey();
}
于 2012-11-06T11:08:31.237 回答
0

您可能需要致电

....
...
if (userInput.StartsWith("A", StringComparison.CurrentCultureIgnoreCase))
{
      Window.theWindow();
}
...
...
于 2012-11-06T11:08:11.000 回答
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();
于 2012-11-06T11:10:04.023 回答