我试图让我的班级号输出另一个班级的变量结果。但是,一旦运行它将显示。错误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();
}
}
}
答案 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);