我的想法是创建一个基于文本的冒险游戏。
我正在尝试在我的主类中使用一个类。 在我努力的时候,它给了我错误:
'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();
}
}
}
答案 0 :(得分:3)
调用类的静态方法的正确语法如下
if (userInput.StartsWith("A", StringComparison.CurrentCultureIgnoreCase))
{
Window.theWindow();
}
你不能简单地使用类的名称,但是你应该指定要调用的静态方法(可能有很多方法)
此外,'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();