【发布时间】:2014-12-23 23:42:52
【问题描述】:
我有自己的数学库,我希望它被称为“数学”(我一直称它为“数学”)。它在自己的命名空间中,但“Math”的类名仍然与 System.Math 冲突。我为解决这个问题所做的是将 System.Math 中所有内容的包装器添加到我的库中,该库只显式调用 System.Math 函数,然后我必须添加
using Math = Yushatak.Libraries.Math;
到每个使用 Math.* 功能的文件。我觉得这不是最好的方法,而且我也担心包装会导致额外的开销,而这也不是你想要开销的地方..
建议?有没有更好的方法来“扩展” System.Math?这只是一个坏主意,我应该回到“数学”吗?有什么建议吗? :P
包装方法示例:
public static decimal Abs(decimal value)
{
return System.Math.Abs(value);
}
【问题讨论】:
-
也许更适合代码审查 SE?很难在没有看到代码的情况下评论开销。如果它主要是静态方法,那么你可能没问题。上面的
using声明也没有错;解决命名空间冲突正是该语法存在的原因。 -
这个问题似乎是题外话,因为它部分基于意见和部分代码审查。
-
根据您的
Math/Maths类的用途,最好只扩展System.Math类 -
添加了一个例子——它们只是静态方法。 @Nunners:我怎么能“扩展” System.Math 类?这听起来像是我想要做的,但我认为我只能在一个类首先被声明为部分时才能从字面上扩展它?