I use interface when I create object - should I set default value for parameter only in interface method?
我在创建对象的时候使用了接口类型——我应该只在接口方法中为参数(=5)设置默认值吗,如下所示?或者也可以在类方法中设置默认值(=5)-在这种情况下,最好的方法是什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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(); } } |
你需要定义"最佳"。默认值基本上只应用于您尝试调用的任何类型。例如,使用当前代码:
1 2 3 4 5 |
如果您只通过接口引用类——或者如果这是您调用该方法的唯一方法,至少是这样——那么可以将默认值只放在接口中。
您甚至可以为类和接口提供不同的默认参数值,但我强烈建议不要这样做。这也意味着,如果您确实决定对类和接口使用相同的默认值,那么如果您(小心地)更改其中一个值,就需要确保它们保持同步。
就个人而言,我使用可选参数非常谨慎。它们可能非常有用,但您需要仔细考虑它们。另一种方法是在接口中声明两个重载:
1 2 | void MyMethod(); void MyMethod(int x); |
号
…或者有一个实现接口的抽象类,保持
从根本上说,你想知道你想要什么样的行为——当你知道你想要什么样的行为时,很可能很容易就可以对你想要的任何行为进行编码。