CS0120 "An object reference is required for the non-static field, method or property ThePlayerOption



这是我的代码,我已经注释了错误所在:

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枚举是在代码中的其他地方定义的。

相关内容

  • 没有找到相关文章

最新更新