我正在使用 C# 设计计算器,但出现编译器错误 CS0029

I am using C# to design a calcuator and i get Complie Error CS0029

所以对于我的家庭作业,我被要求设计一个功能齐全的计算器,它接受按键和按钮点击,但是对于数字 0-9 按钮点击事件,我得到编译错误消息:CS0029:无法隐式转换类型 'int' 到 'string'

这是代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Calculator
{
    public partial class Form1 : Form
    {
        private String calculatedNumber;     // Stores numbers in string form
        private Boolean dot = false;         // Falg: to control when a dot can be placed in a number
        public Form1()
        {
            InitializeComponent();
        }

        private void BtnZero_Click(object sender, EventArgs e)  //adds 0 to string
        {
            //calculatedNumber = Convert.ToString(0);
            if (calculatedNumber = 0)
            {

                LblDisplay.Text=calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnOne_Click(object sender, EventArgs e)   //adds 1 to string
        {

            if (calculatedNumber = 1)
            {
                calculatedNumber = 1.ToString();
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnTwo_Click(object sender, EventArgs e)   //adds 2 to string
        {

            if (calculatedNumber = 2)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnThree_Click(object sender, EventArgs e)   //adds 3 to string
        {

            if (calculatedNumber = 3)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnFour_Click(object sender, EventArgs e)   //adds 4 to string
        {

            if (calculatedNumber = 4)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }
        private void button5_Click(object sender, EventArgs e)   //adds 5 to string
        {

            if (calculatedNumber = 5)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }
        private void BtnSix_Click(object sender, EventArgs e)   //adds 6 to string
        {

            if (calculatedNumber = 6)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnSeven_Click(object sender, EventArgs e)   //adds 7 to string
        {

            if (calculatedNumber = 7)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnEight_Click(object sender, EventArgs e)   //adds 8 to string
        {

            if (calculatedNumber = 8)
            {
                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnNine_Click(object sender, EventArgs e)   //adds 9 to string
        {
            calculatedNumber = 9.ToString();
            if (calculatedNumber = 9)
            {

                LblDisplay.Text = calculatedNumber;
            }
            else
            {

            }
        }

        private void BtnDot_Click(object sender, EventArgs e)   //adds . to string
        {
            if (!dot)
            {
                calculatedNumber += ".";
                dot = true;
            }

            LblDisplay.Text = calculatedNumber;
        }

我做错了什么? PS: 我是 C# 新手

您从所有 if 语句中收到错误消息 "Cannot implicitly convert type 'int' to 'string'"。您应该传递一个 returns a bool 的表达式。但是,您试图将一个 int 分配给 calculatedNumber 这是一个字符串。但是你的意思是检查相等性,它是 == 而不是 =.

将所有 if 语句更改为:

if (calculatedNumber == "0") //or whatever number

但是在您的代码中 calculatedNumber 似乎从来没有在任何地方设置过,所以永远不会是真的。

因为每个按钮都有动作侦听器,所以整个 if 部分是多余的。你可以只拥有:

 private void BtnOne_Click(object sender, EventArgs e)   //adds 1 to string
 {
      LblDisplay.Text = "1";
 }

然而,这似乎仍然不是您想要的功能,因为它会在您每次单击新号码时替换号码,您可能想像这样附加它:

private void BtnOne_Click(object sender, EventArgs e)   //adds 1 to string
{
      LblDisplay.Text = LblDisplay.Text + "1";
}