[英]Are default parameters bad practice in OOP?
方法的默认参数是否违反封装?
在 C# 中不提供默认参数的原因是什么?
我会将此作为微软的“官方”回答。 但是,C# 4.0 中肯定会提供默认(和命名)参数。
不,它不会以任何方式影响封装。 这根本不是经常需要的。 通常,创建占用更少 arguments 的重载是一种更灵活、更简洁的解决方案,因此 C# 的设计者根本没有理由将默认参数的复杂性添加到语言中。
添加“做同样事情的另一种方法”始终是一种权衡。 在某些情况下,它可能很方便。 但是,您使语法越合法,语言学习起来就越复杂,您可能会越多地陷入困境,从而阻止未来的扩展。 (也许他们有一天会为该语言提出另一个扩展,它使用类似的语法。那么就不可能添加,因为它与他们之前添加的功能相冲突)
对于您的第一个问题 - 不,它与提供多个重载构造函数完全相同。 至于第二个,我不能说。
这是为什么 C# http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85556.aspx中没有提供的答案
C# 4.0 中的默认参数实现的一个缺点是它创建了对参数名称的依赖关系。 这在 VB 中已经存在,这可能是他们选择在 4.0 中实现它的原因之一。
另一个缺点是默认值取决于您如何投射 object。 你可以在这里阅读: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.