Winforms “我的windows窗体应用”的空引用异常错误

Winforms “我的windows窗体应用”的空引用异常错误,winforms,Winforms,我有一个包含信息的Setting.cs文件 [Serializable] public class Setting { public Setting() {} public String defaultAlertTone = Path.GetDirectoryName(Application.ExecutablePath) + "\\Sounds\\applause-2.wav"; } 和我的设置通过此代码检索信息 Setting settingObj

我有一个包含信息的Setting.cs文件

[Serializable]
public class Setting
{
    public Setting()     {}

    public String defaultAlertTone = Path.GetDirectoryName(Application.ExecutablePath) + "\\Sounds\\applause-2.wav";        
}
和我的设置通过此代码检索信息

Setting settingObject;
public SoundPlayer player;

public settingsForm(backgroundForm backgroundFormObject)
{
    InitializeComponent();
    this.backgroundFormObject = backgroundFormObject;
    settingObject = backgroundFormObject.getSetting();
}

private void InitializeSound()
{
    // Create an instance of the SoundPlayer class.
    player = new SoundPlayer();
    player.SoundLocation = settingObject.defaultAlertTone;

    // Listen for the LoadCompleted event.
    player.LoadCompleted += new AsyncCompletedEventHandler(player_LoadCompleted);

    // Listen for the SoundLocationChanged event.
    player.SoundLocationChanged += new EventHandler(player_LocationChanged);
}
为什么每次我运行应用程序时,服务器上都会出现空引用异常

player.SoundLocation = settingObject.defaultAlertTone;
backgroundFormObject.getSetting()
只是一种检索设置对象的方法。其代码如下所示

Setting settingObj = new Setting();

public Setting getSetting()
    {
        return settingObj;
    }
原因可能是

  • InitializeSound()
    以某种方式在
    settingsForm
    之前运行(不太可能,但这会使
    settingObject
    未初始化并引用
    null
  • 如果这是
    设置
    类的完整代码,我看不出在任何地方调用
    新设置()。所以使用
    settingsetingobject=newsetting()settingsForm
    类中定义此属性时
  • 不是
    settingObject
    为空

  • 我们需要查看backgroundFormObject.getSetting()的代码,因为您的错误似乎就在这里。如果这样做,我将删除以前的设置?我的错误。这是你的全部设置类代码吗?无论如何,您的
    backgroundFormObject.getSetting()
    可能正在返回
    null
    。在@Skuld的评论中,我们可以看到代码吗?