下面是我的代码片段,变量" _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;
}
}
}
答案 0 :(得分:0)
如果预期的行为是保留最后一个错误,直到它被访问一次,那么预期你描述它的行为方式。
如果预期的行为是保持最后一个错误,直到另一个较新的错误覆盖它,那么詹姆斯的观点很重要。一旦访问静态值,就会清除它,正如Patrick所指出的那样,会影响调试器中的视图。调试器枚举所有属性,因为属性不会产生副作用,例如消除支持它们的数据。