c#静态变量不持久

本文关键字:不持久 变量 静态 | 更新日期: 2023-09-27 18:06:42

下面是我的代码片段,变量"_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;
        }
    }
}

c#静态变量不持久

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

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