我应该何时使用方法重载进行实时开发,请提供一些链接。什么时候应该实时使用方法重载项目?
回答
当多个方法具有相同的目的,但有多种方法启动时,使用重载(推荐)。
所以我们宁愿
int Add(int a, int b) { ...}
int Add(int a, int b, int c) { ... }
比
int Add2(int a, int b) { ...}
int Add3(int a, int b, int c) { ... }
或
int Add(int a, int b, int? c) { ...}
最后一个例子也可以用做(C#4)可选参数。
另一个很好的候选人超载:
void ReadXml(string fileName) { ... }
void ReadXml(Stream strm) { .... }
方法重载是一种用于类设计的OOP技术。它与实时开发无关。
如果您问的是现实世界中使用方法重载 - 这是一种有用的技术,您可以看到它在整个BCL中都被使用。
示例是一些Linq扩展方法,其中许多扩展方法有多个过载(请参阅IEnumerable<T>
)。
根据参数(例如排序),可以通过几种不同方式完成同一操作时,最好使用方法重载。不带参数的重载可能会应用默认排序。带有排序顺序的重载将允许排序,而另一个排序可能会有一个确定排序算法的Func
委托。
稍微有点灵活性,我把它当作“现实生活”项目。 – 2010-07-04 08:15:32
@亨克霍尔特曼 - 够公平的......我想我看到了“实时”,并立即想到了RT编程。 – Oded 2010-07-04 08:19:04
现在好吧,像初始化和命名参数在c#中的东西,它似乎并不是必要的。
我想补充一点,如果你正在创建一个公共API,并且你想要真正锁定事物的使用方式,那么我认为这会更有用。 – spinon 2010-07-04 07:46:55
方法重载可能有用的一种情况是如果你正在构建一些公共API。例如,ASP.NET MVC使用它通过HTML帮助程序提供功能,您可以在其中使用不同参数多次重载同一方法。
- 1. 什么时候应该使用方法重载vs不同命名方法
- 2. 什么时候应该使用AWS,什么时候不使用
- 3. 什么时候应该使用sed,什么时候应该使用awk
- 4. 什么时候应该使用memcpy,什么时候应该使用memmove?
- 5. 什么时候应该使用Import-Package,什么时候应该使用Require-Bundle?
- 6. 什么时候应该使用async/await,什么时候不用?
- 7. 什么时候应该使用模板和重载函数?
- 8. 什么时候应该使用非成员运算符重载?
- 9. 什么时候应该使用Class方法而不是init实例方法?
- 10. 什么时候应该在我的asp.net项目中使用wcf?
- 11. 什么时候应该使用datagrid,何时应该使用datagridview?
- 12. 什么时候应该使用$(object),何时应该使用$ object?
- 13. 什么时候应该重写java.lang.Object方法?
- 14. 我什么时候应该重写等方法在Java中
- 15. 什么时候应该重写toString()?
- 16. 什么时候应该使用“performBlock”方法?
- 17. Python:什么时候应该使用子类而不是方法?
- 18. 什么时候应该使用Moq的.As方法?
- 19. 什么时候应该使用静态方法?
- 20. 什么时候应该使用方法来返回值?
- 21. 什么时候应该使用HtmlHelper扩展方法?
- 22. 什么时候应该使用Lambda或Anonymous方法?
- 23. 什么时候应该使用公共静态方法
- 24. 什么时候应该使用EntityManger分离方法?
- 25. 什么时候应该使用FSharpFunc.Adapt?
- 26. 什么时候应该使用_aligned_malloc()?
- 27. 什么时候应该使用`use`?
- 28. 什么时候应该使用$ rootScope?
- 29. 什么时候应该使用$(document).ready?
- 30. 什么时候应该使用html5 sessionStorage?
@Closers,我无法找到一个副本。这是一个真正的问题。 – 2010-07-04 08:10:40
当你说“实时”是暗示“真实生活”,正如Henk下面提到的,或者你正在研究性能至关重要的实时软件应用程序?我怀疑亨克是正确的,但如果我们能够帮助消除问题的答案,那么答案可能会更合适,当然也会对其他有类似问题的人有帮助。 – 2010-07-04 08:21:27
@亨克因为包含“实时”一词而很难说出什么是被问到的 - 它已经吸引了关于实时编程的答案,并且这个问题在那个领域是没有意义的。如果不恰当地使用“实时”,最好再次提出问题。 – 2010-07-04 09:23:26