C# 静态变量不持久化?

C# static variables not persisting?

下面是我的代码片段,变量“_lastError”在设置后似乎不会持续存在,然后在其他地方访问。

任何人都可以提醒我错过或做错了什么吗?我已经调试了程序,在 getter 和私有 setter 处都设置了一个断点。除了预期的位置之外,似乎没有其他任何东西正在访问或修改“_lastError”的值。

class Utils
{
    private static string _lastError;
    public static string LastError
    {
        get
        {
            string lastError = Utils._lastError;
            Utils._lastError = string.Empty;
            return lastError;
        }

        private set
        {
            Utils._lastError = value;
        }
    }

    public static void Foo()
    {
        try { // .... // }
        catch (Exception ex)
        {
            Utils.LastError = ex.Message;
        }
    }
}

如果预期的行为是保留最后一个错误直到它被访问一次,那么您描述它的行为方式是预期的。

如果预期的行为是保留最后一个错误直到另一个更新的错误覆盖它,那么记住 James 的观点很重要。一旦访问静态值,您就会清除它,正如帕特里克指出的那样,这会影响您在调试器中的视图。调试器枚举所有属性,因为属性不会产生副作用,例如清除支持它们的数据。