我在下面有一个代码。
interface IFirst
{
void Show();
}
public class Test : IFirst
{
void IFirst.Show()
{
Console.WriteLine("First");
}
}
在实现类中,我无法为 Show() 提供公共访问说明符。我如何从主程序调用这个 Show()?
尝试,
IFirst obj = new Test();
obj.Show();
您必须将变量转换为接口类型,因为显式接口方法只能使用接口访问,而不能使用实现它们的类访问。使用显式接口实现是一种代码封装形式,可以让您隐藏类的实现细节(也允许实现许多具有冲突方法名称的接口)。
Test test = new Test();
var casted = test as IFirst;
casted.Show();
您也可以使用隐式转换发送变量到方法:
public void ShowMeATrick(IFirst first) {
first.Show();
}
Test test = new Test();
ShowMeATrick(test);
显式接口方法只能通过接口访问,而不能通过实现它们的类。
在您的代码中,您可以将类的实例强制转换为接口,然后引用显式定义的方法/属性。
显式接口上的 MSDN 链接:http: //msdn.microsoft.com/en-us/library/ms173157%28v=vs.100%29.aspx
另一个问类似问题的问题: 编译错误:“修饰符 'public' 对此项无效”,同时显式实现接口