2009-08-19 82 views
0

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

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

奖励:有没有更好的方法来做到这一点?

+0

我对这个问题的标题有点困惑。 ByVal或ByRef与提供的代码示例有什么关系?没有任何方法采用任何参数。 – JohnFx 2009-08-19 01:15:43

+0

修正了它。希望,这有点更好。这是一个漫长的一天:) – kevindaub 2009-08-19 01:17:28

回答

5

它们都引用同一个对象。因此对它们的修改形式如下:

ourInterface.X = ... 

将反映在'所有视图'中。

实际上,你对你的演员所做的事情(我认为你的意思是你的最后一个是'IOurInterface')给出了一个不同的'视图'数据。在这种情况下,每个接口都会打开一个函数。

+0

谢谢。我有这样的感觉,但我只需要验证。 – kevindaub 2009-08-19 01:21:12

3

它们引用相同的实例。有只有一个实例。

2

1 new = 1 object。他们都参考相同的实例。

0

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