我正在寻找使用static bool编写C#简单语句,该语句第一次返回true,然后总是false。

    static bool _firstTime = true;
    static bool FirstTime
    {
            get
            {
                    bool old = _firstTime;
                    _firstTime = false;
                    return old;
            }
    }


这有效,但我正在寻找没有临时变量(此处为“旧”)的较短对象。

谢谢。

最佳答案

您可以在C#中返回赋值的结果,这意味着您可以进行比较,如果firstTimetrue,则可以返回将其赋值给false的结果:

private static bool firstTime = true;
public static bool FirstTime => firstTime ? !(firstTime = false) : firstTime;


但是您的方法更容易理解。

注意:这与您的原始代码(您所说的“有效”)完全一样是线程安全的,这意味着它不是线程安全的。

关于c# - 第一次返回true的静态属性,此后始终返回false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56979356/

10-11 09:04