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 的观点很重要。一旦访问静态值,您就会清除它,正如帕特里克指出的那样,这会影响您在调试器中的视图。调试器枚举所有属性,因为属性不会产生副作用,例如清除支持它们的数据。
下面是我的代码片段,变量“_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 的观点很重要。一旦访问静态值,您就会清除它,正如帕特里克指出的那样,这会影响您在调试器中的视图。调试器枚举所有属性,因为属性不会产生副作用,例如清除支持它们的数据。