这是我的代码,我已经注释了错误所在:
using System;
using ScissorsPaperRock;
namespace ScissorsPaperRock
{
public class ThePlayerOption
{
public UNIT thePlayerChosenOption;
public static void Main()
{
Console.WriteLine("Select an option. 1 = Scissors, 2 = Paper, 3 = Rock");
int Option = Convert.ToInt32(Console.ReadLine());
if (Option == 1)
{
thePlayerChosenOption = UNIT.SCISSORS; // CS0120
}
else if (Option == 2)
{
thePlayerChosenOption = UNIT.PAPER; // CS0120
}
else if (Option == 3)
{
thePlayerChosenOption = UNIT.ROCK; // CS0120
}
else
{
Console.WriteLine("Please try again!");
}
}
}
}
我不明白错误对我有什么要求,因为以下代码不会产生错误:
using System;
namespace ScissorsPaperRock
{
public class TheAIOption
{
public UNIT theAIChosenOption;
void Start()
{
System.Random rnd = new System.Random(); // Makes the random class.
int AISelect = rnd.Next(0, 2);
{
if (AISelect == 0)
theAIChosenOption = UNIT.SCISSORS;
else if (AISelect == 1)
theAIChosenOption = UNIT.PAPER;
else
theAIChosenOption = UNIT.ROCK;
// This code SHOULD select one of the three enums in Options.cs and keep the selected option on hand.
}
}
}
}
导致此错误的原因是什么?更重要的是,我怎样才能干净地修复它?
干杯。
public UNIT theAIChosenOption;
和public UNIT thePlayerChosenOption;
都是类成员。
void Start()
是一个类方法:它可以自由访问类成员("对象实例方法"(。
public static void Main()
是一个静态类方法。要访问thePlayerChosenOption
您必须:
a( 提供对象引用(错误消息的要点(
。或。。。
b( 声明成员静态:public static UNIT thePlayerChosenOption;
从Microsoft文档中:
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0120
非静态字段、方法或 属性"会员">
要使用非静态字段、方法或属性,您必须 首先创建一个对象实例。有关静态的详细信息 方法,请参见静态类和静态类成员。欲了解更多信息 有关创建类实例的信息,请参阅实例 构造 函数。
这是一篇好文章(众多文章之一!
C#:静态类与非静态类以及静态与实例方法
您的UNIT thePlayerChosenOption
变量被声明为类变量,但您尝试在静态上下文中访问它。将thePlayerChosenOption
标记为static
或在static
方法中提供类型为ThePlayerOption
的对象。我还在考虑您的UNIT
枚举是在代码中的其他地方定义的。