代码之家  ›  专栏  ›  技术社区  ›  xefrog

C#静态变量不持久?

  •  -3
  • xefrog  · 技术社区  · 9 年前

    下面是我的代码片段,变量“_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 回复  |  直到 9 年前
        1
  •  0
  •   Robert Sharp    9 年前

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

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

    推荐文章