在.Net中实现多个接口和对象实例

时间:2009-08-19 01:09:09

标签: c# .net memory-management

以下是我正在做的事情的一个简单示例。基本上,我有多个接口可以由1个类或单独的类实现,因此我将每个接口存储在应用程序中。我唯一的问题是变量myInterface,yourInterface和ourInterface。 他们是引用同一个对象还是有3个不同的对象?

interface IMyInterface
{
    void MyFunction();
}

interface IYourInterface()
{
    void YourFunction();
}

interface IOurInterface()
{
    void OurFunction();
}

public class MainImplementation : IMyInterface, IYourInterface, IOurInterface
{
    public void MyFunction() { }
    public void YourFunction() { }
    public void OurFunction() { }
}

private IMyInterface myInterface;
private IYourInterface yourInterface;
private IOurInterface ourInterface;

static void Main(string[] args)
{
    myInterface = new MainImplementation() as IMyInterface;
    yourInterface = myInterface as IYourInterface;
    ourInterface = myInterface as IOurInterface;
}

奖励:有更好的方法吗?

4 个答案:

答案 0 :(得分:5)

他们都引用同一个对象。所以以下列形式对它们进行更改:

 ourInterface.X = ...

将反映在“所有观点”中。

有效地你正在使用你的演员(我认为你的意思是你的最后一个'作为IOurInterface')给出了不同的数据“视图”。在这种情况下,每个接口都会打开一个函数。

答案 1 :(得分:3)

他们引用同一个实例。 只有一个实例。

答案 2 :(得分:2)

1 new = 1个对象。它们都引用相同的实例。

答案 3 :(得分:0)

他们引用同一个对象。将对象转换为另一个对象只会告诉编译器,当在此对象上调用方法时,请使用此类中定义的方法而不是另一个方法。