定义了多个函数的c#接口

本文关键字:接口 函数 定义 | 更新日期: 2023-09-27 18:14:10

谁能告诉我为什么这不起作用:

public interface IInterface
{
    string GetString(string start);
    void DoSomething();
}
public class InterfaceImpl : IInterface
{
    string IInterface.GetString(string start)
    {
        return start + " okay.";
    }
    void IInterface.DoSomething()
    {
        Console.WriteLine(this.GetString("Go")); // <-- Error: InterfaceImpl does not contain a definition for GetString
    }
}

我不明白为什么我不能调用在实现中定义的函数。

谢谢你的帮助。

定义了多个函数的c#接口

需要在接口类型的变量上调用显式实现的方法,通常使用强制类型转换:

   Console.WriteLine(((IInterface)this).GetString("Go"));

调用显式定义方法的更多变体包含在如何在没有显式转换的情况下内部调用显式接口实现方法?

您不需要显式地使用该方法指定接口。因为InterfaceImpl已经实现了IInterface,你只需要做如下的事情:

public class InterfaceImpl : IInterface
{
    public string GetString(string start)
    {
        return start + " okay.";
    }
    public void DoSomething()
    {
        Console.WriteLine(GetString("Go"));
    }
}

按注释更新