"命名空间' console'已包含' Circle'"的定义

时间:2014-04-04 21:57:56

标签: c# class methods system geometry

我正在研究一个学校项目的代码,我们要有一个定义圆圈的类和一个绘制方法,我的代码到目前为止返回"名称空间'控制台'已包含' 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应该不允许负输入。但是,当这个运行时,负输入仍会返回结果,我错过了什么导致仍然计算负值?

2 个答案:

答案 0 :(得分:4)

(编译器输出消息是你的朋友:确实要学会理解它们。)

在同一名称空间中不能有两个同名的类。

Circleconsole命名空间中出现两次。

只需重命名其中一个。如果我是你,我会改变第一个,因为它不是真正建模一个圆圈。然而,第二堂课是。

答案 1 :(得分:1)

错误非常具体。您已在同一名称空间中声明了两个名为Circle的类。你不能这样做。编译器需要能够区分这两个类,如果它们具有相同的名称,它怎么能这样做呢?

我建议将包含主要入口点的类的名称更改为更合适的名称,例如Program

此外,作为良好做法,您应该坚持使用普遍接受的命名约定并命名您的命名空间Console,而不是console