我在创建对象时使用了接口-我应该只在接口方法中为参数设置默认值吗?
本文关键字:接口 参数 默认值 方法 设置 我应该 创建对象 | 更新日期: 2023-09-27 18:11:32
我使用接口类型当我创建对象的一些类-我应该设置默认值参数(=5)只在接口方法,你可以看到下面?或者也可以在类方法中设置默认值(=5)-在这种情况下最好的方法是什么?
public interface MyInterface
{
void MyMethod(int count = 5);
}
public class MyClass : MyInterface
{
public void MyMethod(int count)
{
}
}
public class TestClass
{
private MyInterface _x;
public TestClass(MyInterface x)
{
_x = x;
}
public void TestMethod()
{
_x.MyMethod();
}
}
你需要定义"best"。默认值基本上只应用于您尝试调用的类型。例如,对于当前的代码:
MyClass c = new MyClass();
c.MyMethod(); // Invalid
MyInterface i = new MyClass();
i.MyMethod(); // Valid
如果你只通过接口引用类——或者如果这是你调用方法的唯一方式,至少——那么把默认值放在接口中是可以的。
您甚至可以为类和接口给不同的默认参数值——但我强烈建议不要这样做。这也意味着,如果您确实决定为类和接口使用相同的默认值,那么如果您(小心地)更改其中一个,则需要确保它们保持同步。
我个人很少使用可选参数。它们可能非常有用,但你需要仔细考虑它们。另一种方法是在接口中声明两个重载:
void MyMethod();
void MyMethod(int x);
…或者有一个实现接口的抽象类,保持MyMethod(int x)
是抽象的,但直接从MyMethod()
调用它并使用默认值,或者简单地在MyClass
中适当地实现它。
从根本上说,你想要弄清楚你想要的行为-当你弄清楚行为是什么时,可能很容易编写任何你想要的行为。