首先,我是C#的新手!
我需要获得一个特定的控制台输入,我需要在另一个类中使用该变量。所以我有Monster.cs
和我的Program.cs
源文件。
这样可行(仅Program.cs
):
string race = Console.ReadLine();
if (race == "1")
{
Console.WriteLine("Typed 1");
}
else if (race == "2")
{
Console.WriteLine("Typed 2");
}
else if (race == "3")
{
Console.WriteLine("Typed 3");
}
else
{
Console.WriteLine("Typed something wrong");
}
但为什么这不起作用?
namespace ConsoleSimulation
{
public class Monster
{
public string race = Console.ReadLine();
}
}
string race = Console.ReadLine();
if (Monster.race == "1")
{
Console.WriteLine("Typed 1");
}
else if (Monster.race == "2")
{
Console.WriteLine("Typed 2");
}
else if (Monster.race == "3")
{
Console.WriteLine("Typed 3");
}
else
{
Console.WriteLine("Typed something wrong");
}
答案 0 :(得分:1)
此代码存在一些问题。我假设你不希望程序不断地从控制台读取,就像现在使用该字段时一样。你需要在类的开头提供一个构造函数来分配race的值,如下所示:
Monster()
{
this.race = Console.ReadLine();
}
或者你必须从调用代码中分配它。为了执行此操作,然后访问其值,您需要该类的实例。你可以这样做:
Monster newMonster = new Monster();
newMonster.race = Console.ReadLine(); //only if no constructor
然后你可以继续在给定的表达式中使用race的值,例如:
if (newMonster.race == "1"){//code here}
但是,如果你不需要字段的类特定值,即在类的实例中值不会改变,你可以像@Backs建议的那样,将race声明为静态字段,如下所示:
public static string race;
您根本不需要该类的newMonster
实例。相反,您只需在调用代码中使用以下内容即可。
Monster.race = Console.ReadLine();
if(Monster.race == "1"){//code here}
请注意,您的字符串声明仍然无法将其指定为类中的Console.ReadLine()
。