gpt4 book ai didi

c# - 当接口(interface)方法没有参数时,为什么不能识别具有所有可选参数的方法的实现?

转载 作者:太空狗 更新时间:2023-10-29 23:18:02 26 4
gpt4 key购买 nike

我一直在尝试使用可选参数并遇到了以下情况。

如果我的类中有一个方法,其中所有参数都是可选的,我可以编写以下代码:

public class Test
{
public int A(int foo = 7, int bar = 6)
{
return foo*bar;
}
}
public class TestRunner
{
public void B()
{
Test test = new Test();
Console.WriteLine(test.A()); // this recognises I can call A() with no parameters
}
}

如果我然后创建一个界面,例如:

public interface IAInterface
{
int A();
}

如果我让测试类实现这个接口(interface),那么它不会编译,因为它说来自 IAInterface 的接口(interface)成员 A() 没有实现。为什么接口(interface)实现没有解析为带有所有可选参数的方法?

最佳答案

这是两种不同的方法。一个有两个参数,一个有零。可选参数只是语法糖。您的方法 B 将被编译为以下内容:

public void B()
{
Test test = new Test();
Console.WriteLine(test.A(7, 6));
}

您可以通过查看生成的 IL 代码来验证这一点。

关于c# - 当接口(interface)方法没有参数时,为什么不能识别具有所有可选参数的方法的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6690270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com