[英]how to convert part of the string to int/float/vector3 etc. without creating a temp string?
[英]How do I properly write Math extension methods for int, double, float, etc.?
我想編寫一系列Extension方法來簡化數學運算。 例如:
代替
Math.Pow(2, 5)
我希望能夠寫作
2.Power(5)
這是(在我看來)更清楚。
問題是:在編寫擴展方法時如何處理不同的數字類型? 我是否需要為每種類型編寫擴展方法:
public static double Power(this double number, double power) {
return Math.Pow(number, power);
}
public static double Power(this int number, double power) {
return Math.Pow(number, power);
}
public static double Power(this float number, double power) {
return Math.Pow(number, power);
}
或者有一個技巧允許單個擴展方法適用於任何數字類型?
謝謝!
不幸的是,我認為你堅持這三個實現。 從單個定義中獲取多個類型化方法的唯一方法是使用泛型,但是不可能編寫一個通用方法,可以為數字類型做一些有用的事情。
我使用的一個解決方案是在對象上進行擴展。 這使得這成為可能,但不幸的是它將在所有對象上可見。
public static double Power(this object number, double power)
{
return Math.Pow((double) number, power);
}
你只需要覆蓋這個問題中提到的Decimal和Double: 這里
我不認為它可能與C#3.0。 看起來你可以做到C#4.0
http://blogs.msdn.com/lucabol/archive/2009/02/05/simulating-inumeric-with-dynamic-in-c-4-0.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.