在这种情况下无法获得布尔值

rjs_花栗鼠

我确定这有一个非常简单的解决方案,但我对此很不擅长......我想要“时间到了!” 仅在 2 分钟计时器后显示的文本,就像它开始时和 2 分钟后一样,我认为 bool 可以做到,但我无法让它工作,我认为它与“静态无效”有关“公共无效”的东西,但我不确定,任何帮助将不胜感激!

class Program
{
    bool a = false;

    static void Main(string[] args)
    {
        //Define thread
        Console.WriteLine("Start, you have 2 mins!");

        //120000 is milliseconds, so every 120 seconds it will run the thread function
        System.Threading.Timer threadingTimer = new Timer(run, 0, 0, 120000);
        a = true;
        Console.ReadLine();
    }

    //define thread function
    public void run(object args)
    {
        if (a = true)
        {
            Console.WriteLine("Times Up!");
        }

    }
}

如果有更简单的方法来实现这一点,那么也很感激,感谢您的观看!

吉拉德格林

您当前代码中的问题如下:以下if statement将始终是true.

if (a = true)
{
    Console.WriteLine("Times Up!");
}

这是为什么?在 a 中()if statement您应该传递一个有效的布尔表达式。当你写a = true你正在做的是

  1. 分配truea
  2. 评估a中的上下文(其新的价值)它if由于a类型为bool它编译。

因此if总是遇到并且你总是得到印刷品。

你可能的意思是写a == true. 区别==在于是等号运算符而不是赋值运算符。


顺便说一句,如果您查看visual studio 会给您以下消息:

条件表达式中的赋值始终是常量;你的意思是用 == 而不是 = ?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章