C# 运算符“-”不能应用于操作数“string”和“double”C

C# 运算符“-”不能应用于操作数“string”和“double”C,c#,C#,在使用计算器时,我试图使用文本框中的字符串和双精度来获得答案,在使用减法、乘法、除法和指数时出现了以下错误: 运算符-不能应用于操作数字符串和双精度 代码: 在尝试修补和解决这个错误之后,我无法有效地完成它。所以如果你能坚持下去,那就太好了,如果不是的话,我理解 假设结果为双精度,则括号位置为: textBox1.Text = (results + Double.Parse(textBox1.Text).ToString()); 应该是: textBox1.Text = (results +

在使用计算器时,我试图使用文本框中的字符串和双精度来获得答案,在使用减法、乘法、除法和指数时出现了以下错误:

运算符-不能应用于操作数字符串和双精度

代码:

在尝试修补和解决这个错误之后,我无法有效地完成它。所以如果你能坚持下去,那就太好了,如果不是的话,我理解

假设结果为双精度,则括号位置为:

textBox1.Text = (results + Double.Parse(textBox1.Text).ToString());
应该是:

textBox1.Text = (results + Double.Parse(textBox1.Text)).ToString();
 (results + Double.Parse(textBox1.Text)).ToString();

这个和那些喜欢它的

 (results + Double.Parse(textBox1.Text).ToString());
应该是:

textBox1.Text = (results + Double.Parse(textBox1.Text)).ToString();
 (results + Double.Parse(textBox1.Text)).ToString();

您正在将文本解析为double,然后立即调用ToString将其转换回字符串。您需要将ToString放在末尾,以将结果转换为字符串

您正在对返回值Double.Parse调用ToString。我很确定您想调用ToString查看算术运算的结果,但括号搞错了。

我认为错误消息是自我解释的,您知道变量结果的类型是double,错误消息指出运算符-不能应用于操作数string和double,因此可以理解第二个操作数是string,由此可以得出结论。ToString在这里产生了问题。我想为你提出一个不同的解决方案;您可以这样做:

double currentNumber;
if (double.TryParse(textBox1.Text, out currentNumber))
{
    switch (operation)
    {
        case "+":
            textBox1.Text = (results + currentNumber).ToString();
            break;
        case "-":
            textBox1.Text = (results - currentNumber).ToString();
            break;
        case "*":
            textBox1.Text = (results * currentNumber).ToString();
            break;
        case "/":
            textBox1.Text = (results / currentNumber).ToString();
            break;
        case "^":
            textBox1.Text = (results ^ currentNumber).ToString();
            break;
    }
}
else
{
    textBox1.Text = "Invalid input";            
}

因为Double.Parse可能会在输入无效的情况下抛出FormatException,以避免像我建议的那个样继续使用TryParse

什么是结果?您的结果似乎是字符串类型的变量。不是吗?史蒂夫不是double@MohitShrivastava不,这是一个双重的请阅读指南,以提供代码样本。在这种情况下,示例应为字符串s=1d*1d.ToString;而不是当前帖子中的代码墙。谢谢!它起作用了,我还让指数与一点TinkeringeExcellent一起工作!很高兴听到这个消息,希望被否决这篇文章的人有一些个人报复,因为我可以这么说;-1.在其他两个答案中,TryParse总是比Parses好。2.比另外两个解释多一点