【发布时间】:2022-01-21 14:15:48
【问题描述】:
using System;
interface ISample{
abstract void SampleMethod();
}
class SampleClass: ISample{
void ISample.SampleMethod(){
Console.WriteLine("SampleMethod was called.");
}
}
class Program{
public static void Main (string[] args){
SampleClass smpcls = new SampleClass();
smpcls.ISample.SampleMethod();
}
}
此代码可以无缝运行。但是我必须从“SampleClass”的实例“smpcls”中调用“ISample”接口。如何直接从“SampleClass”实例调用“SampleMethod”?
例如:
...
SampleClass smpcls = new SampleClass();
smpcls.SampleMethod() //I would like to call it like this.
smpcls.ISample.SampleMethod() //Not like this
...
【问题讨论】:
-
接口中不能有抽象方法
-
如果方法是这样实现的,您必须在访问该方法之前将类实例强制转换为接口。相反,为什么不直接将其设为公共方法,而不是显式实现接口的该方法?
-
当他们在 C# 8 中添加默认接口方法时,他们还添加了对显式访问修饰符的支持。尽管
abstract是默认值,但实际上您现在可以显式指定它。但它并没有改变任何东西,该成员的行为就像它自 C# 1 以来的行为一样。
标签: c# .net class interface implementation