以下是我的代码:
public interface I1
{
void method1();
}
public interface I2
{
void method1();
}
class MyClass
{
static void Main(string[] args)
{
One one = new One();
}
}
public class One :I1,I2
{
void I1.method1()
{
Console.WriteLine("This is method1 from Interface 1");
}
void I2.method1()
{
Console.WriteLine("This is method1 from Interface 2");
}
}
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
我无法在类One中将方法声明为Public,因为这些是Interface方法.
那只是因为你正在使用显式接口实现.假设您确实需要两个不同的实现,您可以隐含其中一个:
public void method1()
{
Console.WriteLine("This is method1 from Interface 1");
}
void I2.method1()
{
Console.WriteLine("This is method1 from Interface 2");
}
Run Code Online (Sandbox Code Playgroud)
注意现在我们如何指定public访问修饰符,one.method1()并将调用该公共方法.显式接口实现仅允许通过表达式访问该方法,该表达式的编译时类型是接口(而不是实现它的类).
我无法在Main函数中从MyClass实例调用这些Interface方法实现.
同样,仅因为您使用显式接口实现而您的one变量属于类型One.
基本上你可以调用方法:
One one = new One();
I1 i1 = one;
I2 i2 = one;
i1.method1();
i2.method1();
Run Code Online (Sandbox Code Playgroud)
或者只是演员:
((I1)one).method1();
((I2)one).method1();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1878 次 |
| 最近记录: |