c# - 为什么要实现接口(interface)?

标签 c# oop interface

实现接口(interface)只是提供方法的骨架。如果我们知道该方法的确切签名行,在这种情况下
实现接口(interface)的要求是什么?
这是已经实现接口(interface)的情况

interface IMy
{
    void X();
}
public class My:IMy
{
    public void X()
    {
        Console.WriteLine("Interface is implemented");
    }
}

这是Interface没有实现的情况

public class My
{
    public void X()
    {
        Console.WriteLine("No Interface is implemented ");
    }
}


My obj = new My();
obj.X();

这两种方法都会产生相同的结果。
实现接口(interface)的要求是什么?

最佳答案

接口(interface)的目的是允许您使用两个不同的类就好像它们是相同的类型。这在关注点分离方面非常宝贵。

例如我可以编写一个从 IDataReader 读取数据的方法。我的方法不需要知道(或关心)它是 SqlDataReader、OdbcDataReader 还是 OracleDataReader。

private void ReadData(IDataReader reader)
{
....
}

现在,假设我需要该方法来处理来自非标准数据文件的数据。我可以编写自己的实现 IDataReader 的对象,它知道如何读取该文件,我的方法也不知道也不关心 IDataReader 是如何实现的,只是向它传递了一个实现 IDataReader 的对象。

希望这对您有所帮助。

关于c# - 为什么要实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6098242/

相关文章:

go - 如何在不更改golang中原始值的情况下修改对象的值副本?

c# - 重复的SQL连接,我应该创建一个类吗?

c# - 如何简化 Silverlight 4 中的 WCF 调用

ruby - Ruby 中的普通旧对象?

c++ - 如果按类型比较是糟糕的设计,那么在这种情况下我该怎么办? (多态性)

C#泛型和继承问题

c# - XML 对象反序列化到接口(interface)

C# Unity GetKeyDown() 未被正确检测到

c# - 在 VS2012 中使用 EventToCommand 时出现 XAML "Invalid Markup"错误

javascript:私有(private)成员和只读属性