C# 尽管实现的方法具有相同的签名,但代码仍然有效

C# 尽管实现的方法具有相同的签名,但代码仍然有效,c#,interface,C#,Interface,我不知道为什么这个代码有效 interface ISumCalculator { int Calc( int x, int y ); } interface IProductCalculator { int Clac ( int x, int y ); } class Calculator : ISumCalculator, IProductCalculator { public int Calc(int x, int y) { throw

我不知道为什么这个代码有效

interface ISumCalculator
{
    int Calc( int x, int y );
}

interface IProductCalculator
{
    int Clac ( int x, int y );
}


class Calculator : ISumCalculator, IProductCalculator
{

    public int Calc(int x, int y)
    {
        throw new NotImplementedException();
    }

    public int Clac(int x, int y)
    {
        throw new NotImplementedException();
    }
}

这些方法具有相同的签名,但名称不同,因此这里没有问题

即使在名称和签名完全相同的情况下,您也可以通过在方法定义中显式定义接口来轻松解决问题:

class Calculator : ISumCalculator, IProductCalculator
{

    int IProductCalculator.Calc(int x, int y)
    {
        throw new NotImplementedException();
    }

    int ISumCalculator.Calc(int x, int y)
    {
        throw new NotImplementedException();
    }
}

Calc()
Clac()
是两个不同的方法名称。

Uhm。。。它们有不同的名称?一个是
Calc
,另一个是
Clac
。为了保持一致性,我建议将IPProductCalculator接口重命名为IPProductCalculator。如果名称匹配,您仍然可以使用使
Calculator
实现这两个名称。