c#接口(interface)问题

标签 c# inheritance interface

我有以下代码:

// IMyInterface.cs

namespace InterfaceNamespace
{
    interface IMyInterface
    {
        void MethodToImplement();
    }
}

.

// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{
    void IMyInterface.MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }
}

这段代码编译得很好(为什么?)。但是当我尝试使用它时:

// Main.cs

    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer();
        iImp.MethodToImplement();
    }

我得到:

InterfaceImplementer does not contain a definition for 'MethodToImplement'

MethodToImplement 从外部不可见。但是,如果我进行以下更改:

// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{

    public void MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }
}

然后 Main.cs 也可以正常编译。为什么两者之间存在差异?

最佳答案

通过 implementing an interface explicitly ,您正在创建一个只能通过强制转换为接口(interface)来调用的私有(private)方法。

关于c#接口(interface)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043869/

相关文章:

Javascript原型(prototype)继承基函数未定义

C# 将 List<ObjBase> 转换为 List<Obj>

java - 如何扩展 Singleton 类

C# 在其他 API 中调用 post 方法获取 404

c# - 在 Silverlight 4 中水平显示项目列表

c# - 为什么 User.IsInRole 在这种情况下不起作用?

java - 接口(interface)和 jaxb

c# - linq group by 语句

java - 通过不同的 Java 类实现通用接口(interface)

delphi - 如何在 Delphi TInterfaceList 中存储和定位多个接口(interface)类型