我正在研究一个学校项目的代码,我们要有一个定义圆圈的类和一个绘制方法,我的代码到目前为止返回"名称空间'控制台'已包含' Circle'的定义这是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace console
{
class Program
{
static void Main(string[] args)
{
Console.Write("What is the circle’s radius: ");
double radius = Convert.ToDouble(Console.ReadLine());
Circle ans = new Circle(radius);
Console.WriteLine("The area of the circle is " + ans.getArea);
Console.WriteLine("The Diameter of the circle is " + ans.getDiameter);
Console.WriteLine("The Circumference of the circle is " + ans.getCircumference);
Console.Write("Enter any character to quit program. ");
double stop = Console.Read();
}
}
}
方法和班级:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace console
{
class Circle
{
public double radius;
public const double PI = 3.14159;
public Circle(double r)
{
radius = r;
}
public Circle()
{
radius = 0.0;
}
public double getDiameter
{
get
{
return radius * 2;
}
}
public double getArea
{
get
{
return PI * radius * radius;
}
}
public double getCircumference
{
get
{
return 2 * PI * radius;
}
}
// property Radius
public double Radius
{
get
{
return radius;
}
set
{
// ensure non-negative radius value
if (value >= 0)
radius = value;
}
}
}
}
最后一个问题,现在我有工作代码,set和get应该不允许负输入。但是,当这个运行时,负输入仍会返回结果,我错过了什么导致仍然计算负值?
答案 0 :(得分:4)
(编译器输出消息是你的朋友:确实要学会理解它们。)
在同一名称空间中不能有两个同名的类。
Circle
在console
命名空间中出现两次。
只需重命名其中一个。如果我是你,我会改变第一个,因为它不是真正建模一个圆圈。然而,第二堂课是。
答案 1 :(得分:1)
错误非常具体。您已在同一名称空间中声明了两个名为Circle
的类。你不能这样做。编译器需要能够区分这两个类,如果它们具有相同的名称,它怎么能这样做呢?
我建议将包含主要入口点的类的名称更改为更合适的名称,例如Program
。
此外,作为良好做法,您应该坚持使用普遍接受的命名约定并命名您的命名空间Console
,而不是console
。