当前位置:  开发笔记 > 编程语言 > 正文

方法在.Net中重载成本

如何解决《方法在.Net中重载成本》经验,为你挑选了3个好方法。

是否存在与.Net中的重载方法相关的成本?

所以,如果我有3个方法,如:

Calculate (int)
Calculate (float)
Calculate (double)

并且这些方法在运行时"动态地"调用,基于传递给Calculate方法的内容,这个重载决策的成本是多少?

或者我可以有一个Calculate并在方法体中产生差异,但我认为这将需要该方法在每次调用时评估类型.

是否有更好的方法/设计来解决这个问题,可能没有开销?或者更好的是,处理这类案件的最佳做法是什么?我想拥有相同的类/方法名称,但行为不同.

编辑:谢谢大家.如果它有任何不同,Jusdt有一件事.我想知道你有这些方法的DLL和用C#编写的程序,它允许用户将这些方法添加为UI项(不指定类型).所以用户添加UI项目Calculate(5),然后计算(12.5)等,C#app执行此操作,是否仍然没有开销?



1> Aleris..:

就运行时而言,这些是不同的方法.与写作相同:

CalculateInt(int)
CalculateFloat(float)

关于性能问题,除了非常特殊的情况,您可以安全地忽略方法调用开销.



2> Kevin Kibler..:

这个问题是关于方法重载,而不是多态.据我所知,方法重载没有惩罚,因为编译器会根据传递给它的参数类型找出在编译时调用哪个方法.

只有在使用派生类型作为基类的替代时,多态性才会发挥作用.



3> Michael Mead..:

首先,除非您的分析器告诉您存在性能问题,否则您不应为牺牲性能提升而牺牲良好的设计.

要回答您的问题,方法调用的解决方案不是动态的.它是在编译时确定的,因此在这方面没有成本.唯一的成本是可能隐式转换类型以适合参数类型.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有