C# 创建计算面积的程序
我有四个错误,我正在挣扎C# 创建计算面积的程序,c#,area,C#,Area,我有四个错误,我正在挣扎 在用于打印形状区域的WriteLine块中,变量“area”出现的两个位置都会显示错误消息:“名称“area”在当前上下文中不存在”。第二个问题是在类Rectangle:GeometricFigure中,对于'ComputeArea',错误显示为“'Rectangle.ComputeArea()'隐藏继承的成员'GeometricFigure.ComputeArea()”。如果要隐藏,请使用new关键字。“最后一个错误在类Triangle:GeometricFigure
在用于打印形状区域的WriteLine块中,变量“area”出现的两个位置都会显示错误消息:“名称“area”在当前上下文中不存在”。第二个问题是在类Rectangle:GeometricFigure中,对于'ComputeArea',错误显示为“'Rectangle.ComputeArea()'隐藏继承的成员'GeometricFigure.ComputeArea()”。如果要隐藏,请使用new关键字。“最后一个错误在类Triangle:GeometricFigure中,与'public Triangle'中的'Triangle'有关。”(int x,int y)“表达式。错误消息显示“'Rectangle.ComputeArea()”隐藏继承的成员'GeometricFigure.ComputeArea()”。如果要隐藏,请使用new关键字
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace ShapesDemo
{
class Program
{
static void Main(string[] args)
{
Rectangle rec = new Rectangle(8, 10);
Square squ = new Square(11, 12);
Triangle tri = new Triangle(10, 20);
Console.WriteLine("Computed area is {0}" + "\n\n" + "Computed Triangle is: {1}" + "\n",
squ.ComputeArea(area), tri.ComputeArea(area));
}
}
abstract class GeometricFigure
{
public GeometricFigure(decimal sideA, decimal sideB)
{
this.height = sideA;
this.width = sideB;
}
protected decimal area;
protected decimal width;
protected decimal height;
public decimal Height
{
get
{
return height;
}
set
{
height = value;
ComputeArea();
}
}
public decimal Width
{
get
{
return width;
}
set { width = value; }
}
public decimal Area
{
get { return area; }
set { area = value; }
}
public void ComputeArea()
{
}
}
class Rectangle : GeometricFigure
{
public Rectangle(decimal sideA, decimal sideB) : base(sideA, sideB)
{
}
public void ComputeArea()
{
area = width * height;
WriteLine("The Area is" + width.ToString(), height.ToString());
}
static void Display(Rectangle rec)
{
}
}
class Square : GeometricFigure
{
static void Display(Square squ)
{
}
public Square(decimal sideA, decimal sideB) : base(sideA, sideA)
{
}
}
class Triangle : GeometricFigure
{
static void Display(Triangle tri)
{
}
public Triangle(int x, int y)
{
this.Width = x;
this.Height = y;
}
}
}Microsoft文档提供了一个很好的示例,说明了您在这里试图实现的目标,通常您希望:
名称区域不存在,因此您无法使用它。Main()方法无法访问该区域。我认为您正在尝试执行以下操作:
class Program
{
static void Main(string[] args)
{
Rectangle rec = new Rectangle(8, 10);
Square squ = new Square(11, 12);
squ.ComputeArea();
Triangle tri = new Triangle(10, 20);
tri.ComputeArea();
Console.WriteLine("Computed area is {0}" + "\n\n" + "Computed Triangle is: {1}" + "\n",
squ.Area, tri.Area);
Console.ReadLine();
}
}
但是你也有一个更大的设计问题。使用GeometricFigure基类会给你带来很多问题。我会完全装备它,或者使用一个接口。你的三角形还需要:
public Triangle(decimal sideA, decimal sideB) : base(sideA, sideA)
{
this.Width = sideA;
this.Height = sideB;
}
“名称'area'在当前上下文中不存在”-正确,您没有要传入的'area'。最好猜测您想要
squ.area
并在Square.ComputeArea()中编写代码设置其区域成员字段。您可以使用override
关键字覆盖现有成员。但是,这假定该成员在您的抽象基类中是virtial
或abstract
。谢谢。帮助很大。