有人可以解释C#中接口的确切用法吗?
答案 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方法定义方法实现。