C#静态变量不能持久化?

时间:2015-08-05 15:23:42

标签: c# static persist

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

任何人都可以对我错过或做错了吗?我调试了程序,在getter和private 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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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