带属性的简单 C# 计算器

Simple C# Calculator with Properties

我知道这个计算器可以写得比我写的简单得多,但我想了解它不能像我写的那样使用属性的原因。我在一本书中读到我可以省略 "set" 访问器,但是当我这样做时我得到了更多的错误。我也遇到 Main 方法错误。任何帮助,将不胜感激。 1 号线(CS5001)、9 号线(CS5113)和 26 号线(CS0161)。

using System;

namespace Calculator
{
class Program
{
    public static void Main(string[] args)

    { 

    public int number01;
    public int number02;
    public int Number03

    {
        get

        {
            return number02 / number01;
        }
    }

    class Program1 : Program
    {

        public int DivideFinal()
        {

            Console.Write("Enter a number to be divided: ");
            Console.ReadKey();
            number01 = Convert.ToInt32(Console.ReadKey());
            Console.WriteLine("Enter another number to be divided");
            number02 = Convert.ToInt32(Console.ReadKey());
            Console.WriteLine("The result is: " + Number03);
            Console.ReadKey();
        } 

}

}

}

您遗漏了两个右大括号并声明了一个函数 returns 和 int 实际上 returns 什么都没有。 它有助于一次修复一件事——事实上,尝试一次只编写很少的代码,边做边编译。如果您看不出有什么问题,请注释掉大块内容并尽量使您的代码整齐排列,这样您就可以看到您可能遗漏了大括号或类似内容的地方。

using System;

namespace Calculator
{
    class Program
    {
        public static void Main(string[] args)
        {

        }//<-----------

        public int number01;
        public int number02;
        public int Number03
        {
            get
            {
                return number02 / number01;
            }
        }//<----------

        class Program1 : Program
        {

            public void DivideFinal()//<---- void not int
            {
                Console.Write("Enter a number to be divided: ");
                Console.ReadKey();
                number01 = Convert.ToInt32(Console.ReadKey());
                Console.WriteLine("Enter another number to be divided");
                number02 = Convert.ToInt32(Console.ReadKey());
                Console.WriteLine("The result is: " + Number03);
                Console.ReadKey();
            }
        }

    }
}

好的 - 现在我们已经编译好了让我们看看你所拥有的本质。

namespace Calculator
{
    class Program
    {
        public static void Main(string[] args)
        {
        }
    }
}

您在具有预期 static void Main 入口点的名称空间中有一个名为 Program 的 class。它什么都不做,所以当你 运行 它什么也不会发生。如果你在调试器中 运行 它,你可能会打印 "Press any key to continue"。

如果你想让事情发生,它需要在你的入口点代码 - 默认情况下这个 Main 函数。

您已向此 class 添加了一些您不使用的属性。你已经开始写另一个class,叫做Program1insidethisclass,它也继承自thisclass.

考虑将其命名为 Calculator,因为这就是您要编写的内容。它不需要从您的主要 class 继承 - 它们是不相关的。在新文件中创建一个新的 class 会更整洁。

启动一个 new class,并在其中添加 DivideFinal 等属性和其他方法。 (顺便说一句,你为什么称它为 DivideFinal?)

namespace Calculator
{
    class Calculator
    {
        public int number01;
        public int number02;
        public int Number03
        {
            get
            {
                return number02 / number01;
            }
        }

        public void DivideFinal()
        {
            Console.Write("Enter a number to be divided: ");
            Console.ReadKey();
            number01 = Convert.ToInt32(Console.ReadKey());
            Console.WriteLine("Enter another number to be divided");
            number02 = Convert.ToInt32(Console.ReadKey());
            Console.WriteLine("The result is: " + Number03);
            Console.ReadKey();
        }
    }
}

最后,让我们让主函数做一些事情:

    public static void Main(string[] args)
    {
        var calculator = new Calculator();
        calculator.DivideFinal();
    }

这会导致一些错误,我们可以在另一个问题中处理。 例如,Convert.ToInt32 期望 String 但您给它的结果 Console.ReadKey 不是字符串。您可能希望考虑使用 Console.ReadLine():例如,请参阅此 question