1

我在下面有一个代码。

interface IFirst
{
   void Show();
}

public class Test : IFirst
{
   void IFirst.Show()
   {
       Console.WriteLine("First");
   }
}

在实现类中,我无法为 Show() 提供公共访问说明符。我如何从主程序调用这个 Show()?

4

3 回答 3

5

尝试,

IFirst obj = new Test();
obj.Show();
于 2012-09-22T08:56:39.543 回答
0

您必须将变量转换为接口类型,因为显式接口方法只能使用接口访问,而不能使用实现它们的类访问。使用显式接口实现是一种代码封装形式,可以让您隐藏类的实现细节(也允许实现许多具有冲突方法名称的接口)。

Test test = new Test();
var casted = test as IFirst;
casted.Show();

您也可以使用隐式转换发送变量到方法:

public void ShowMeATrick(IFirst first) {
    first.Show();
}

Test test = new Test();
ShowMeATrick(test);
于 2012-09-22T09:06:16.353 回答
0

显式接口方法只能通过接口访问,而不能通过实现它们的类。

在您的代码中,您可以将类的实例强制转换为接口,然后引用显式定义的方法/属性。

显式接口上的 MSDN 链接:http: //msdn.microsoft.com/en-us/library/ms173157%28v=vs.100%29.aspx

另一个问类似问题的问题: 编译错误:“修饰符 'public' 对此项无效”,同时显式实现接口

于 2012-09-22T09:08:38.493 回答