【发布时间】:2015-08-05 15:23:42
【问题描述】:
下面是我的代码 sn-p,变量“_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;
}
}
}
【问题讨论】:
-
您的
get方法正在清除它?Utils._lastError = string.Empty; -
只有在调试时将鼠标悬停在属性上才会重置它...
-
请描述你的类 Utils 应该做什么。目前,它看起来不太好......你有私人二传手,唯一的集是在吸气?有些东西闻起来很香。
-
@JamesThorpe:这是有意的。我的意思是让它在被引用后清除该值。
-
这就是它没有持续存在的原因。第一次在任何地方读取它(包括根据@Patrick 的评论在调试器中),它将被清除。