C#从辅助静态类中的静态方法调用父类的实例方法

时间:2014-08-11 20:17:56

标签: c# static-methods instance-variables

我有一个继承自A类的公共类B.B类可以访问实例方法TMA()。方法TMA()在A类中实现,我无权访问A.我有一个辅助静态类C,它实现了一个静态方法GetValue()。我需要通过静态GetValue()方法访问实例方法TMA()。一个复杂因素是GetValue()方法被多次调用。

public class B : A
{
    ...
}

public static class C
{
    public static double GetValue()
    {
        double result = 0;
        result = TMA(); // <--- I would like to do this but it does not work.
        return result;
    }
}

我尝试了以下内容,虽然它编译了,但它会在执行时崩溃程序。可能是程序创建的B类实例太多了,但我不确定。

public static class C
{
    public static double GetValue()
    {
        B b = new B();
        double result = 0;
        result = b.TMA(); // <--- This did not work.
        return result;
    }
}

我也尝试通过对象引用访问实例方法TMA(),但这不起作用。

public static class C
{
    public static double GetValue(..., B ob)
    {
        double result = 0;
        result = ob.TMA(); // <--- This did not work.
        return result;
    }
}

我已经阅读了关于单身人士模式的内容,但我不知道这对我有什么帮助。任何建议或意见,将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以保留B的静态实例并使用它吗?

public static class C
{
    static B _theB = new B();

    public static double GetValue()
    {
        double result = 0;
        result = _theB.TMA(); 
        return result;
    }
}

答案 1 :(得分:0)

TMA在做什么?它是否涉及特定的A(或B)对象?

您的第三次尝试似乎是最正确的(取决于您的通话方式)GetValue()。但确切地知道它“不起作用”将会有所帮助。 (它崩溃了吗?无法编译?错误信息是什么?)