【问题标题】:C# method group to bool?C# 方法组布尔值?
【发布时间】:2017-11-06 11:41:49
【问题描述】:

我已经创建了一些代码,但我找不到它有什么问题。代码如下:

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (MyMethod) //<==underlines this and gives the error
        {
            //code
        }
        else
        {
            //code
        }
     }

    public bool MyMethod()
    {
        if (Form1.f >= 0.001)
            return true;
        else
            return false;
    }

我得到的错误信息:

无法将方法组“MyMethod”转换为非委托类型“bool”。 您是否打算调用该方法?

有人可以帮我解决这个问题吗?我似乎做错了,我尝试了几件事...我也尝试将其更改为字符串并将返回值更改为字符串,但这会产生相同的错误(除了布尔值,它已更改为字符串) .提前致谢!

【问题讨论】:

  • 调用函数if (MyMethod())
  • 我认为我只是愚蠢非常感谢大家!
  • 顺便说一句,if (something) return true; else return false; 只不过是写return someting; 的一段很长的路。只需使用return Form1.f &gt;= 0.001; 即可完成。
  • 不要编辑并将Solved 放入您的问题中,而是接受实际解决您问题的答案。

标签: c# methods


【解决方案1】:

MyMethod 不是字段或属性,而是方法。必须使用() 调用方法:

if (MyMethod()){ ... }

你可以把它变成一个属性,然后你就不需要它们了,f.e.如expression-body:

public bool MyMethod => Form1.f >= 0.001;

现在您可以使用(选择更有意义的名称):

if (MyMethod) { ... }

【讨论】:

  • +1 用于将MyMethod 定义为属性并按照问题中的要求实际使用它的语言特定替代方案。
【解决方案2】:

非常简单的错误。您忘记在方法名称后面加上(),因此您的参数被视为委托并调用错误,因为它无法转换为非委托类型的“布尔”。

if (MyMethod()) //<==corrected  the error
{
    //code
}
else
{
    //code
}

【讨论】:

    【解决方案3】:

    您实际上是将委托传递给方法,而不是方法的结果。要调用该方法以便检查函数的结果,您需要在末尾添加括号,如下所示:

    if (MyMethod())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2017-05-23
      相关资源
      最近更新 更多