我一直在用C#开发软件一段时间,但我没有充分利用的一个主要领域是接口。事实上,我经常对它们可以使用的各种方式以及何时使用它们感到困惑。例如,我知道方法可以返回接口,可以将它们作为参数,可以从它们派生等等。这个概念对我来说是一个明确的弱点
我想知道是否有人知道某个源/教程能够清楚彻底地解释接口的深度以及它们可以使用的各种方式吗?
答案 0 :(得分:58)
C#中的接口提供了一种实现运行时多态性的方法。使用接口我们可以通过相同的接口引用调用来自不同类的函数,而使用虚函数我们可以通过相同的引用调用同一继承层次结构中不同类的函数。
public class FileLog : ILog
{
public void Log(string text)
{
// write text to a file
}
}
public class DatabaseLog : ILog
{
public void Log(string text)
{
// write text to the database
}
}
public interface ILog
{
void Log(string text);
}
public class SomeOtherClass
{
private ILog _logger;
public SomeOtherClass(ILog logger)
{
// I don't know if logger is the FileLog or DatabaseLog
// but I don't need to know either as long as its implementing ILog
this._logger = logger;
logger.Log("Hello World!");
}
}
您要求提供教程。
答案 1 :(得分:5)
接口通常用于强制实现类遵守某个契约(意味着具有某些方法)。有时它们只是用作标记,即它们没有声明方法,但是使一些代码生成器能够为实现类生成特殊代码。
话虽如此,接口本身并不是真正的“工具”,因此它们不能用于特定的功能目的,但它们可以极大地简化应用程序的设计,并广泛用于OO设计模式。本教程是一个基本资源:http://www.csharp-station.com/Tutorial/CSharp/Lesson13