- 此问题在此处已有答案**:
C# call interface method with default implementation(3个答案)
When should we use default interface method in C#?(2个答案)
3天前关闭。
截至3天前,社区正在审查是否重新讨论此问题。
我正在写一个可重用的程序,它包含不同的排序算法。我希望每个排序算法实现一个"打印到控制台函数"。所以我实现了一个接口:
namespace ConsoleControl
{
interface IConsoleControlInterface
{
void PrintArray(int[] array)
{
}
}
}
然后,我的BubbleSort类实现了这个接口:
using ConsoleControl;
namespace BubbleSort
{
public class BubbleSortClass : IConsoleControlInterface
{
由于这是一个接口,BubbleSortClass必须实现接口的函数PrintArray(int [] array):
void IConsoleControlInterface.PrintArray(int[] array)
{
Console.WriteLine("Printing The Array");
foreach (var item in array)
{
Console.Write(item + " ");
}
}
但是我如何在Main()中调用这个方法呢?
BubbleSort.BubbleSortClass arrayToBeSorted2 = new BubbleSort.BubbleSortClass(10);
arrayToBeSorted2.InitializeArray();
arrayToBeSorted2.PrintArray(arrayToBeSorted2.array);
但是编译器显示PrintArray函数不存在,如何修复?
我尝试从对象arrayToBeSorted2.PrintArray调用它,我假设简单调用PrintArray(...)不会起作用,因为此函数未标记为静态
1条答案
按热度按时间tzxcd3kk1#
这里有explicitly implemented
IConsoleControlInterface.PrintArray
,在这种情况下,强制转换(IConsoleControlInterface)arrayToBeSorted2
将显示您所期望的方法PrintArray
。除非您有明确的理由要显式实现一个接口,否则prefer implicit implementation就是
void PrintArray(int[] array) {...
这将消除为了"看到"方法而将类强制转换到适当接口的需要。
希望这有帮助!