非静态字段需要一个对象
本文关键字:一个对象 字段 静态 | 更新日期: 2023-09-27 17:49:54
这里真的没有太多事情要做。我已经将代码简化为这一小段无法编译的代码。同样,错误是"非静态字段、方法或属性需要对象"。
public class Scorer
{
public enum ScoringCategory {FullHouse}
public int getScore(ScoringCategory category)
{
return 1;
}
}
[TestClass]
public class ScoringTests
{
[TestMethod]
public void TestFullHouse()
{
// Here is where I get the error
int myScore = Scorer.getScore(Scorer.ScoringCategory.FullHouse);
}
}
您需要创建Scorer
的实例,因为它是一个实例方法,它是在类型的实例上声明的,而不是类型本身(如static
方法):
var scorer = new Scorer();
int myScore = scorer.getScore(Scorer.ScoringCategory.FullHouse);
你的方法getScore是类Scorer
的实例方法。在使用该方法之前,您需要创建一个Scorer
类型的对象。
可以:
public class Scorer
{
public enum ScoringCategory {FullHouse}
public int getScore(ScoringCategory category)
{
return 1;
}
}
[TestClass]
public class ScoringTests
{
[TestMethod]
public void TestFullHouse()
{
// create an instance
var scorerInstance = new Scorer();
// call instance method getScore
int myScore = scorerInstance.getScore(Scorer.ScoringCategory.FullHouse);
}
}
我会从封装类中删除枚举并使其静态,以便您可以在尝试时使用它:
public static enum ScoringCategory {FullHouse}
public class Scorer
{
public int getScore(ScoringCategory category)
{
return 1;
}
}