带属性的简单 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,叫做Program1
insidethisclass,它也继承自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。
我知道这个计算器可以写得比我写的简单得多,但我想了解它不能像我写的那样使用属性的原因。我在一本书中读到我可以省略 "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,叫做Program1
insidethisclass,它也继承自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。