当前位置: 首页 > 编程语言 > C#

如何正确编写int、double、float等的Math扩展方法?分享

时间:2023-04-10 16:56:35 C#

如何正确编写int、double、float等的Math扩展方法?我想编写一系列扩展方法来简化数学运算。例如:我希望能够编写2.Power(5)而不是Math.Pow(2,5),这(在我看来)更清晰。问题是:在编写扩展方法时如何处理不同的数字类型?我是否需要为每种类型编写扩展方法:publicstaticdoublePower(thisdoublenumber,doublepower){returnMath.Pow(number,power);}publicstaticdoublePower(thisintnumber,doublepower){returnMath.Pow(number,power);}publicstaticdoublePower(thisfloatnumber,doublepower){returnMath.Pow(number,power);或者是否存在允许单个扩展方法适用于任何数字类型的技巧?谢谢!不幸的是,我认为您受困于这三种实现。从单个定义中获取多个类型化方法的唯一方法是使用泛型,但不可能编写一个对数字类型有用的泛型方法。我认为C#3.0不可能。看起来你可以使用C#4.0http://blogs.msdn.com/lucabol/archive/2009/02/05/simulating-inumeric-with-dynamic-in-c-4-0.aspx你只需要重写Decimal和Double,如这个问题中提到的:我在这里使用的一种解决方案是对对象进行扩展。这使得这成为可能,但不幸的是它将在所有对象上可见。以上就是C#学习教程:如何正确编写int、double、float等的Math扩展方法?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——publicstaticdoublePower(thisobjectnumber,doublepower){returnMath.Pow((double)数,幂);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: