为什么我不能在C#中访问基类中的方法?

时间:2018-08-12 09:50:13

标签: c# visual-studio object

我试图让我的班级号输出另一个班级的变量结果。但是,一旦运行它将显示。错误CS0103:名称“结果”在当前上下文中不存在。有人可以告诉我如何解决这个问题吗?如何正确调用getMax方法?

using System;

namespace Bank
{

    class FindMax
    {
        public int setMax(int numOne, int numTwo)
        {
            int result;

            if (numOne >= numTwo)
                result = numOne;
            else
                result = numTwo;

            return result;
        }


    }

    class Number : FindMax
    {
        public void getMax()
        {
            Console.WriteLine(result);
        }
    }

    class MainClass
    {
        public static void Main(string[] args)
        {
            FindMax mx = new FindMax();
            Number n = new Number();
            mx.setMax(20, 12);
            n.getMax();
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您将result定义为setMax()内的局部变量,因此getMax()无法访问它。因此,您应该修复代码:

class FindMax
{
    protected int Result; // Not private, because Number (inherits from FindMax) should access it.

    public int setMax(int numOne, int numTwo)
    {
        if (numOne >= numTwo)
            Result = numOne;
        else
            Result = numTwo;

        return Result;
    }
}

class Number : FindMax
{
    public void getMax()
    {
        Console.WriteLine(Result);
    }
}

答案 1 :(得分:1)

结果是一个局部变量,您不能从Number类访问它。您应该将其设置为基类的属性:

using System;

namespace Bank
{

    class FindMax
    {
        protected int max;

        public void setMax(int numOne, int numTwo)
        {
            if (numOne >= numTwo)
                max = numOne;
            else
                max = numTwo;
        }


    }

    class Number : FindMax
    {
        public void getMax()
        {
            Console.WriteLine(max);
        }
    }

    class MainClass
    {
        public static void Main(string[] args)
        {
            Number n = new Number();
            n.setMax(20, 12);
            n.getMax();
        }
    }
}

答案 2 :(得分:0)

因为未定义getMax中的变量。 你可以做这样的事情

class Number : FindMax
    {
        public void getMax(int result)
        {
            Console.WriteLine(result);
        }
    }

然后致电

var max = mx.setMax(20, 12);
n.getMax(max);