C#中如何在Main函数调用显式实现的接口方法?
显式接口实现方法无法直接调用的解决办法
问题原因
当类显式实现接口方法时,该方法仅属于接口成员,不属于类的公共成员集合,因此无法直接通过类的实例调用,编译器会提示方法不存在。
两种可行解决方案
方案1:将类实例转换为接口类型后调用
通过强制类型转换,把类实例转为接口类型,再调用方法:
// 初始化类实例 BubbleSortClass bubbleSort = new BubbleSortClass(); int[] testArray = {3,1,4,1,5}; // 转换为接口类型后调用PrintArray ((IConsoleControlInterface)bubbleSort).PrintArray(testArray);
方案2:改为隐式实现接口方法
如果你的类不需要处理多接口同名方法冲突,可以把显式实现改为隐式实现,这样方法会成为类的公共成员,直接通过实例调用即可:
// 隐式实现接口的写法 public class BubbleSortClass : IConsoleControlInterface { // 去掉接口名称前缀,添加public修饰符 public void PrintArray(int[] array) { // 控制台打印数组的逻辑 foreach (int num in array) { Console.Write($"{num} "); } Console.WriteLine(); } } // 调用方式 BubbleSortClass bubbleSort = new BubbleSortClass(); bubbleSort.PrintArray(testArray);
选择建议
- 若类需要实现多个包含同名方法的接口,必须保留显式实现,使用方案1调用;
- 若没有方法名冲突的场景,方案2的写法更简洁直观,调用更方便。
内容的提问来源于stack exchange,提问作者NaviteLogger
相关产品推荐
相关产品推荐

