如何调用明确实现的方法

时间:2012-09-22 08:54:02

标签: c# oop

下面有一些代码。

interface IFirst
{
   void Show();
}

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

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

3 个答案:

答案 0 :(得分:5)

尝试,

IFirst obj = new Test();
obj.Show();

答案 1 :(得分: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);

答案 2 :(得分:0)

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

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

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

提出类似问题的另一个问题: Compilation Error: "The modifier 'public' is not valid for this item" while explicitly implementing the interface