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

问题描述:

我相信我想要做的事很简单,但是我得到错误。 运算符'*'不能应用于'方法组'和'双'类型的操作数错误运算符'*'不能应用于'method group'和'double'类型的操作数

如果选中该复选框,我想将日存储的天数乘以19.95。我得到的错误说,我不能,因为dayrental是一种方法。 如何从dayrental中获得价值,以便在19.95年之前实现倍增?

private void button1_Click(object sender, EventArgs e) 
    { 
     double rental; 
     dayrental(); 
     if (checkBox1.Checked == true) 
      rental = dayrental * 19.95; 
     label4.Text = Convert.ToString(rental); 




    } 

    private void label4_Click(object sender, EventArgs e) 
    { 

    } 
    public void dayrental() 
    { 
     var timeSpan = dateTimePicker2.Value - dateTimePicker1.Value; 
     var rentalDays = timeSpan.Days;      
     //label4.Text = Convert.ToString(rentalDays); 
    } 

你的语法只是有点关闭(在函数调用之后缺少括号并且没有为你的函数指定返回类型)。

if (checkBox1.Checked == true) 
    rental = dayrental() * 19.95; 

public double dayrental() 
{ 
    var timeSpan = dateTimePicker2.Value - dateTimePicker1.Value; 
    return (double) timeSpan.Days; 
} 

在C#methodcall总是由一对大括号表示,而该方法本身是由它的名字寻址。所以dayrental()是dayrental的返回值,而dayrental是dayrental的方法。因此你将方法dayrental乘以19.95显然失败。 你所要做的是:

rental = dayrental() * 19.95; 

而且dayrental返回void所以youm飞行想将其更改为

public double dayrental() 

,并返回一定的价值。

dayrental是一个返回void的函数。

它没有价值,你不能用19

你缺少从你的函数调用dayrental,这是造成编译器认为你的paranthesis相乘的指的方法本身,而不是结果对该方法的调用。

rental = dayrental * 19.95; 

应该

rental = dayrental() * 19.95; 

这样做:

private void button1_Click(object sender, EventArgs e) 
{ 
    double rental; 

    var dayRental = dayrental(); 

    if(checkBox1.Checked == true) 
     rental = dayrental * 19.95; 

    label4.Text = Convert.ToString(rental); 
} 

private void label4_Click(object sender, EventArgs e) 
{ 

} 

public int dayrental() 
{ 
    var timeSpan = dateTimePicker2.Value - dateTimePicker1.Value; 

    var rentalDays = timeSpan.Days;      

    return rentalDays; 
}