C# 静态函数有不同的静态类变量?

C# 静态函数有不同的静态类变量?,c#,static,windows-phone,C#,Static,Windows Phone,这是前一个问题的后续问题: 我有一门课是这样的: public class PlaylistModel { public static event EventHandler PlaylistLoadError; public static int myInt; public static void LoadPlaylist() { try { // do some stuff, simulate

这是前一个问题的后续问题:

我有一门课是这样的:

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);
           }
        }
    }
}
在程序中的其他位置,我正在设置PlayLoadError事件处理程序,如下所示:

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内部,playlayloaderror为null,myInt为0,尽管在其他地方进行了设置。稍后,当我创建PlayModel的实例时,PlayLoadError和myInt是正确的值。所以我的问题是-一个类的静态函数是否以某种方式访问不同版本的静态类变量?我已经检查了静态变量的内存地址,它们确实是不同的,这取决于我是否在非静态函数和静态函数中。

静态变量是静态的,并且在程序运行时将保持不变,除非调用某些东西来更改它

如果您想了解发生了什么,我会将字段更改为:

private static int _myInt;
然后添加:

public static int myInt
{ 
    get { return _myInt; } 
    set { _myInt = value; }
}

然后在设置时添加一个断点,这样你就可以知道它什么时候被更改了。

否。后代码实际上再现了问题。?这是重现问题的代码…不,我无法运行此代码并重新处理问题。你需要这个:我也这么做了。没问题。一切都很好!哪个先跑?在设置处理程序和int之前是否调用LoadPlaylst?当然可以。在适用的行上放置断点。