接口如何成为类中的变量?

时间:2014-04-03 15:00:45

标签: c# interface

我正在尝试理解一个项目中的一个类,并且对于Interface有点困惑。 根据我的理解,接口是一个特定类将遵守的“契约”,因此它应始终为指定的方法,属性等提供实现。

那么我怎么可能将它作为一个对象实现呢?例如

private IMyInterfaceName _interfaceObject;

有人可以解释一下作为对象的接口的用途以及如何使用它?

2 个答案:

答案 0 :(得分:2)

_interfaceObject能够保存对实现接口的类实例的引用:

public class MyClass : IMyInterfaceName {}

...

_interfaceObject = new MyClass();

答案 1 :(得分:0)

这是一个包含两个实现的合同:

interface ICalculator 
{
    //this contract makes it possible to add to given numbers a and b
    int Add(int a, int b);
}

class SmartCalculator : ICalculator
{
    // a concise way to add two numbers
    public int Add(int a, int b)
    {
        return a+b;
    }
}

class DumbCalculator : ICalculator
{
    //A not that beautiful way to add to numbers
    public int Add(int a, int b)
    {
        int result = a;
        for(var i=1;i<=b;i++)
        {
            result+=1;
        }
        return result;
    }
}

现在你要问的课程

class MyMainClass
{
    private readonly ICalculator calcuator;

    public MyClass()
    {
        //If I'm smart i'll do the following
        calculator = new SmartCalculator();
        //If I'm not, well..
        calculator = new DumbCalculator();
    }
}