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