这是对上一个问题的跟进:C# Static event null from within class
我有这样的课:
public class PlaylistModel {
public static event EventHandler PlaylistLoadError;
public static int myInt;
public static void LoadPlaylist()
{
try
{
// do some stuff, simulate exception
throw new InvalidOperationException();
}
catch(InvalidOperationException ex)
{
EventHandler handler = PlaylistLoadError;
if(handler != null)
{
PlaylistLoadError(null, null);
}
}
}
}
在程序的其他地方,我正在设置 PlaylistLoadError EventHandler,如下所示:
public class MainPage {
public MainPage() {
PlaylistModel.PlaylistLoadError += MyErrorHandler;
PlaylistModel.myInt = 5;
}
public static void MyErrorHandler(object sender, EventArgs e)
{
Debug.WriteLine("There was an error");
}
}
现在,在 LoadPlaylist 内部,PlaylistLoadError 为 null 而 myInt 为 0,尽管在其他地方设置了它们。后来,当我创建 PlaylistModel 的实例时,PlaylistLoadError 和 myInt 是正确的值。所以我的问题是——一个类的静态函数是否以某种方式访问不同版本的静态类变量?我检查了静态变量的内存地址,它们确实不同,具体取决于我是在非静态函数还是静态函数内部。