我是C#初学者(3天经验)。今天我在C#中练习继承。这是我的代码:
source /etc/apache2/envvars
编译器说"'矩形'的类型或命名空间无法找到",与Circle相同。怎么了?虽然我尝试了很多方法来修复它们,但我并不理解。我怎样才能找到并理解错误?
答案 0 :(得分:6)
阅读错误。你从未写过一个名为Rectangle
的类。 Rect
不是一回事。
答案 1 :(得分:3)
您有2个错误。
错误#1是你的构造函数名和你的类名不一样
错误#2是构造函数不能有返回类型(void)
public class Rectangle
{
public Rectangle(double length, double width)
{
...
}
}
答案 2 :(得分:1)
我认为你应该集中精力学习class
和method
之间的区别。
在您的代码中,您创建了以下两个类:
public class Cir : Geometry
public class Rect : Geometry
然而,当您在Main()
方法中实例化类时,不要通过类名称来调用它们,而是使用为每个类定义的void
方法:
Rectangle a = new Rectangle(23.00, 21.4);
Circle b = new Circle(5.8);
您可能想要做的是将两个类重命名为Rectangle,并为每个获取所需参数的类添加Constructor。
public class Circle : Geometry
{
public Circle(double radius)
{
perimeter = radius * 2 * Math.PI;
area = radius * radius * Math.PI;
}
}
尽量保持您的方法轻松,将其限制为单一责任或目的,并相应地命名。例如,在Geometry
课程中,您可以添加void PrintDetails()
方法,或者更好地添加void PrintArea()
AND void PrintPerimeter()
方法:
public class Geometry
{
public double perimeter;
public double area;
public bool special;
public void PrintArea()
{
Console.WriteLine("Area: " + area);
}
public void PrintPerimeter()
{
Console.WriteLine("Perimeter: " + perimeter);
}
}
答案 3 :(得分:0)
您只能创建类的实例/对象。你的班级名字是
Rect
和
Cir
这些类的对象名称是
一
和
B'/ P>
分别。所以你的代码应该是
Rect a = new Rect;
a.Rectangle(23.00, 21.4); //Calls your method using Rect class object
Cir b = new Cir;
b.Circle(5.8);//Calls your method using Cir class object
答案 4 :(得分:-1)
您定义的类是" Rect"例如。现在你可能认为这是" Rectangle"的缩写,编译器有一个更利他的观点 - 它不一样,所以错误。
与" Circ"相同。
现在,两个类的CONSTRUCTORS都有正确的名称(因此不是构造函数),但类名本身 - 是错误的。
答案 5 :(得分:-1)
您没有关闭命名空间几何体。 您可以创建Rect(class)或Cir,而不是Rectangle(方法)或Circle。
的实例