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

你如何扩展(或扩展)静态数学方法?

如何解决《你如何扩展(或扩展)静态数学方法?》经验,为你挑选了1个好方法。

使用C#3.0,我知道你可以使用'this'命名扩展方法.

我正在尝试扩展Math.Cos(双弧度)以包含我的新类.我知道我可以在现有的课程中创建一个"Cos"方法,但我只是想看看如何/为了练习这样做.

在尝试了一些新的东西之后,我回到了SO以获得输入.我被卡住了.

这就是我现在所拥有的......

public class EngMath
{
    /// ---------------------------------------------------------------------------
    /// Extend the Math Library to include EngVar objects.
    /// ---------------------------------------------------------------------------

    public static EngVar Abs(this Math m, EngVar A)
    {
        EngVar C = A.Clone();

        C.CoreValue = Math.Abs(C.CoreValue);

        return C;
    }

    public static EngVar Cos(this Math m, EngVar A)
    {
        EngVar C = A.Clone();
        double Conversion = 1;
        // just modify the value. Don't modify the exponents at all

        // is A degrees? If so, convert to radians.
        if (A.isDegrees) Conversion = 180 / Math.PI;

        C.CoreValue = Math.Cos(A.CoreValue * Conversion);

        // if A is degrees, convert BACK to degrees.
        C.CoreValue *= Conversion;

        return C;
    }

    ...

Brian Rasmus.. 12

扩展方法是一种使静态方法看起来像是"扩展"类型的实例方法的方法.换句话说,您需要某个实例才能使用扩展方法功能.

通过尝试让Math.Cos处理你的类型,听起来你正在以相反的方式解决它.在这种情况下,我担心你必须自己实现这些功能.如果那不是你想要做的,请澄清.



1> Brian Rasmus..:

扩展方法是一种使静态方法看起来像是"扩展"类型的实例方法的方法.换句话说,您需要某个实例才能使用扩展方法功能.

通过尝试让Math.Cos处理你的类型,听起来你正在以相反的方式解决它.在这种情况下,我担心你必须自己实现这些功能.如果那不是你想要做的,请澄清.

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