【问题标题】:object reference null exception对象引用空异常
【发布时间】:2015-07-16 06:38:39
【问题描述】:

我正在尝试访问按钮 clickevent 中 resulterr 的值,以便在消息框中显示它。尽管将 resulterr 列表设置为公共,但我没有在按钮单击事件中获取值。我收到异常,因为对象引用未设置为对象的实例。请纠正错误。

   public List<ErrorMsgTemplate> resulterr;
   public PPFCWCFServiceClient ppfcObj = new PPFCWCFServiceClient();

    public Admin()
        : base("Administration")
    {
        SplashScreenManager.ShowDefaultWaitForm();
        InitializeComponent();

        GetSource();
        ErrorMsg();
        FillDivision();

        cmbDivision.SelectedIndex = -1;

        SplashScreenManager.CloseDefaultWaitForm();


    }

    public void ErrorMsg()
    {
        List<ErrorMsgTemplate> resulterr = ppfcObj.getErrorMsgTemplate("ADMIN");            
    }




    private void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
            if (cmbDivision.SelectedIndex == -1) //naray added
            {
                MessageBox.Show(resulterr[0].ERROR_MESSAGE_TEMPLATE.ToString() + "," + resulterr[0].SCREEN_NM.ToString(), "PPFC");
            }

【问题讨论】:

  • 除了这是一个重复的问题之外,您的以下陈述让我感到困扰:“请纠正错误。”不!这是你的任务。我们在这里所做的只是帮助您了解问题以及如何解决它,但 Stack Overflow 上的人不是来为您编写代码的。当你的问题得到回答时,你不应该只是有更好的工作代码;您应该了解它的为什么有效。
  • 我调试发现,一旦退出ErrorMsg(),resulterr 的值就会变为null。我只需要访问数据库一次,但我必须在页面中存在 MessageBox 的多个位置使用 resulterr。

标签: exception object-reference


【解决方案1】:

我发现了问题。我已将全局变量声明为

public List<ErrorMsgTemplate> resulterr;

并在ErrorMsg() 中再次实例化:

public void ErrorMsg()
{
    List<ErrorMsgTemplate> resulterr = ppfcObj.getErrorMsgTemplate("ADMIN");            
}

改为使用:

public void ErrorMsg()
{
    resulterr = ppfcObj.getErrorMsgTemplate("ADMIN");            
}

现在我可以在btnsave 事件中访问resulterr

【讨论】:

    【解决方案2】:

    当您的变量值变为空白或空格时会出现该错误。您可以通过 null 或空格进行跟踪以防止此错误

    【讨论】:

    • 大多数语言中没有空格或空格不为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2015-07-25
    • 1970-01-01
    • 2023-03-26
    • 2018-06-07
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多