0

我想让某人在我的代码中输入长度和宽度的值,这是我到目前为止得到的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Rectangle
    {
        double length;
        double width;
        double a;

        static double Main(string[] args)
        {
            length = Console.Read();
            width = Console.Read();
        }

        public void Acceptdetails()
        {

        }

        public double GetArea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }

    class ExecuteRectangle
    {
        public void Main()
        {
            Rectangle r = new Rectangle();

            r.Display();
            Console.ReadLine();
        }
    }
}

尝试使用两种Main方法是错误的方法吗?这是我从http://www.tutorialspoint.com/csharp/csharp_basic_syntax.htm复制的代码,我正在尝试对其进行修改,以获得更多使用这种编程语言的经验。

4

2 回答 2

4

你的代码有问题,我们来分析一下:

  1. 一个程序必须有一个唯一的入口点并且它必须被声明为静态无效,这里你有两个主要但它们是错误的

  2. 你在你的静态 Main 矩形类中的一个你不能引用变量 length e width 因为它们没有被声明为静态

  3. console.Read() 返回一个表示字符的 int,因此如果用户输入 1,您的长度变量中可能有不同的值
  4. 你的静态双主不返回双

我认为你想要的是:

  1. 将静态 double Main 声明为 void Main()
  2. 将您的 void Main 声明为 static void Main(string[] args)
  3. 在您的新静态 void Main 调用中(在创建矩形之后)它是 Main 方法(为此,您必须将其定义为公共)
  4. 使用 ReadLine 代替 Read()
  5. ReadLine 返回一个字符串,以便将其转换为双精度,您必须使用 lenght = double.Parse(Console.ReadLine())
  6. 最后打电话给你的 r.display()

这是一个可以做你想做的工作的代码。复制粘贴之前请注意,因为您正在尝试并阅读步骤并尝试在不查看代码的情况下修复它

class Rectangle
{
    double length;
    double width;
    double a;
    public void GetValues()
    {
        length = double.Parse(Console.ReadLine());
        width = double.Parse(Console.ReadLine());
    }
    public void Acceptdetails()
    {

    }
    public double GetArea()
    {
        return length * width;
    }
    public void Display()
    {
        Console.WriteLine("Length: {0}", length);
        Console.WriteLine("Width: {0}", width);
        Console.WriteLine("Area: {0}", GetArea());
    }

}
class ExecuteRectangle
{
    public static void Main(string[] args)
    {

        Rectangle r = new Rectangle();
        r.GetValues();
        r.Display();
        Console.ReadLine();
    }
}
于 2013-08-24T21:27:38.267 回答
0

在这种情况下,您必须告诉编译器是具有入口点的类。

“如果您的编译包含多个具有 Main 方法的类型,您可以指定哪个类型包含要用作程序入口点的 Main 方法。”

http://msdn.microsoft.com/en-us/library/x3eht538.aspx

是的,有两种主要方法是令人困惑和毫无意义的。

于 2013-08-24T21:12:54.903 回答