非静态字段需要一个对象

时间:2015-05-19 06:52:44

标签: c# enums compiler-errors arguments

这里真的没什么了不起的。我已经将代码简化为这个不会编译的小段。同样,错误是"非静态字段,方法或属性需要一个对象。"

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);
    }
}

3 个答案:

答案 0 :(得分:5)

您需要创建Scorer的实例,因为它是实例方法,它是在类型的实例上声明的,而不是类型本身(如{{1}方法):

static

答案 1 :(得分:0)

您的方法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);
    }
}

答案 2 :(得分:0)

我会从封装类中删除枚举并将其设置为静态,以便您可以在尝试时使用它:

public static enum ScoringCategory {FullHouse}    
public class Scorer
{
    public int getScore(ScoringCategory category)
    {
        return 1; 
    }
}