错误:CS0120非静态字段或方法或属性'Calculator.opsObj'需要对象引用

时间:2019-11-17 05:43:21

标签: c# oop

命名空间DelegatePractise1 {

public delegate int AddDelegate(int x, int y);

class Calculator
{
    MathOps opsObj = new MathOps();
    static void Main(string[] args)
    {

        AddDelegate addDelInstance = new AddDelegate(opsObj.Add);//getting error here 
        int sum = addDelInstance(2, 3);
        Console.WriteLine("{0} sum", sum);
        Console.Read();

    }
}

public class MathOps
{
     public int Add(int x, int y)
    {
        return x + y;
    }
}

}

当我在主体内部初始化对象'opsObj'时,错误不再出现。您能解释一下为什么我需要在这种情况下将对象初始化包含在主体中吗?我是oop概念的新手。预先感谢

2 个答案:

答案 0 :(得分:0)

您不能在静态main方法中使用非静态对象,因此请将其转换为static 使它工作或添加具有所有逻辑的新类 这将解决问题

static MathOps opsObj = new MathOps();

答案 1 :(得分:-1)

您可以像这样简单地分配委托:

 AddDelegate addDelInstance = opsObj.Add;