在C#中,我们必须命名接口(interface)方法的参数。

我了解,即使我们不必这样做,也可以帮助读者理解其含义,但是在某些情况下,并不需要这样做:

interface IRenderable
{
    void Render(GameTime);
}

我要说的是,以下内容具有可读性和意义:
interface IRenderable
{
    void Render(GameTime gameTime);
}

是否存在某种技术原因,为什么需要接口(interface)上方法的参数名称?

值得注意的是,接口(interface)方法的实现可以使用与接口(interface)方法中不同的名称。

最佳答案

一种可能的原因可能是使用可选参数。

如果使用接口(interface),则不可能指定命名参数值。一个例子:

interface ITest
{
    void Output(string message, int times = 1, int lineBreaks = 1);
}

class Test : ITest
{

    public void Output(string message, int numTimes, int numLineBreaks)
    {
        for (int i = 0; i < numTimes; ++i)
        {
            Console.Write(message);
            for (int lb = 0; lb < numLineBreaks; ++lb )
                Console.WriteLine();
        }

    }
}

class Program
{
    static void Main(string[] args)
    {
        ITest testInterface = new Test();
        testInterface.Output("ABC", lineBreaks : 3);
    }
}

在此实现中,使用接口(interface)时,timeslineBreaks上都有默认参数,因此,如果通过接口(interface)访问,则可以使用默认值,而无需命名参数,我们将无法跳过times参数并仅指定lineBreaks参数。

只是一个FYI,取决于您是通过接口(interface)还是通过类访问Output方法,它确定默认参数是否可用以及它们的值是多少。

关于c# - 为什么我们必须命名接口(interface)方法参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8614182/

10-17 01:51