有人可以解释C#中接口的确切用法吗?

时间:2010-05-11 05:08:25

标签: c# interface

有人可以解释C#中接口的确切用法吗?

6 个答案:

答案 0 :(得分:2)

msdn对此没有帮助吗?

<强> http://msdn.microsoft.com/en-us/library/87d83y5b.aspx

答案 1 :(得分:2)

过去已经多次讨论过这个问题很难找到任何一个副本。

为了节省重复之前所说的时间try this search,并开始审核结果。

答案 2 :(得分:2)

想象一下拥有一家创造汽车的工厂的情况。你知道每辆车都有一台发动机,可以启动,所以你有以下几点:

interface IVehicle
{
   Engine vehicleEngine { get; set; }

   bool StartEngine();
}

现在,工厂制造了一系列其他车辆,例如卡车和普通车:

public Car : IVehicle
{
   // MUST implement vehicleEngine and StartEngine:

   public Engine vehicleEngine { get; set; }

   public bool StartEngine()
   {
       // Cars needs to do xyz to start
   }

   public int MaxNumberOfPassenger { get; set; } // Specific to Car
}

然后:

public Truck : IVehicle
{
   // MUST implement vehicleEngine and StartEngine:

   public Engine vehicleEngine { get; set; }

   public bool StartEngine()
   {
       // Trucks needs to do abc to start
   }

   public int MaximumLoad { get; set; } // Specific to Truck
}

因此,这迫使所有车辆实施特定成员属于车辆类别,但也可以专门与他们自己的不同成员。

答案 3 :(得分:0)

用最简单的术语来说,界面表达了一个或多个类可以的内容,尽管各个类的实施可能会有所不同。

答案 4 :(得分:0)

Polymorphism 您可以使用2个实现相同接口的类,而无需确切知道它是哪个具体类。它有助于保持代码松散耦合。

答案 5 :(得分:0)

接口定义了可以实例化的类必须实现的最低要求。它通过方法表达了这一点。

例如,接口可以定义一个名为Foo的函数,它接受一个整数并返回一个布尔值:

public interface ICanFoo
{
    bool Foo(int number);
}

任何实现此接口的类也必须实现此方法:

public class Fooable : ICanFoo
{
    public bool Foo(int number)
    {
        // do something
    }
}

方法中的实现取决于实现接口的特定类。

通过使用接口,您不再关心实现是编译时间,而是规范。你可以这样称呼它:

ICanFoo myFooable = ...
bool success = fooable.Foo(4);

fooable的实际类型可以是任何实现ICanFoo的类,因为您知道 ICanFoo将始终为Foo方法定义方法实现。