在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)时,
times
和lineBreaks
上都有默认参数,因此,如果通过接口(interface)访问,则可以使用默认值,而无需命名参数,我们将无法跳过times
参数并仅指定lineBreaks
参数。只是一个FYI,取决于您是通过接口(interface)还是通过类访问
Output
方法,它确定默认参数是否可用以及它们的值是多少。关于c# - 为什么我们必须命名接口(interface)方法参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8614182/