运算符'*'不能应用于类型 'double' 和'method'类型的操作数



我正在尝试将form2中声明的文本框相乘。 在表单 2 上,我有

public partial class Form2 : Form
{
public static string SetvalueforTextBox1;
public static string SetvalueforTextBox2;
}

还有

public void TextBox1_TextChanged(object sender, EventArgs e)
{
SetvalueforTextBox1 = TextBox1.Text;
SetvalueforTextBox2 = TextBox2.Text;
}

现在在我的 Form3 上,我想显示用户在 form2 上输入的值的乘法

private void label1_Click(object sender, EventArgs e)
{
label1.Text = double.Parse(Form2.SetvalueforTextBox1) 
* double.Parse(Form2.SetvalueforTextBox1).ToString();
}

我收到错误,"运算符"*"不能应用于类型"双精度和"方法"类型的操作数

请帮助我

你的问题在这里:

double.Parse(Form2.SetvalueforTextBox1).ToString()

首先,您解析字符串,然后十再次转换为字符串。删除.ToString()

我想你想写:

label1.Text = (double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1)).ToString();

在第一种情况下,您尝试将双精度相乘和字符串在第二种情况下,您将乘法结果转换为字符串。

在行中

label1.Text = double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1).ToString();

您正在执行以下操作(让我们分解一下(:

  1. 你解析一个双精度值从设置值为文本框1
  2. 你解析一个双精度值从设置值为文本框1
  3. 您根据结果 2 调用ToString()
  4. 您尝试将第一次解析的结果与从第二部分获得的字符串相乘

这给了你错误。

你需要做的是封装乘法并得到结果als字符串,如下所示:

label1.Text = (double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1)).ToString();

这样,乘法的结果将以字符串形式返回并分配。

在使用ToString之前,您似乎忘记用括号将double.Parse方法括起来:

label1.Text = (double.Parse(Form2.SetvalueforTextBox1) * double.Parse(Form2.SetvalueforTextBox1)).ToString();

这是一个正确的赋值顺序,因为两个double.Parse首先计算,然后乘以它们ToString方法double值转换为label1.Text属性所需的字符串。

请注意,运算符优先级决定了执行流:

  1. double.Parse(Form2.SetvalueforTextBox1)string值转换为第一个操作数的double

  2. double.Parse(Form2.SetvalueforTextBox1).ToString()将字符串转换为双精度,然后ToString将其值还原为字符串作为第二个操作数。

  3. 运算符*尝试将double值乘以string值,这在此上下文中是无效的(操作数必须具有相同的数据类型才能执行乘法(。

最新更新