从方法返回布尔值

时间:2011-10-14 21:37:51

标签: c# object boolean

我在程序中创建了一个保存选项,用于保存对文件的更改。我正在使用此代码保存并获取MessageBox以显示进程的结果我在此行中收到错误“对象引用未设置为对象的实例。”

     SaveFileCheck = StockHandler.SaveChangesToFile();

这是我的代码

    private void Save_Click(object sender, EventArgs e)
    {

        bool SaveFileCheck = false;
        var result = MessageBox.Show("Are you sure you want to Save the changes ?", "My   Application",
      MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
        if (result == DialogResult.Yes)
        {           

                 SaveFileCheck = StockHandler.SaveChangesToFile();
                 if (SaveFileCheck)
                 {
                     MessageBox.Show("The process was a success");
                 }
                 else
                 {
                     MessageBox.Show("The process failed please make sure that the file is not been       used and try again");
                 } 

            //Save the file back


        }
    }
}
}

    public bool SaveChangesToFile() 
    {
        try
        {
            if (FileName != null)
            {
                using (StreamWriter Write = new StreamWriter(FileName, false))
                {
                    foreach (Stock s in FileStockList)
                    {
                        Write.Write(s.ToString() + "\r\n");

                    }

                }
            }
            else {
                return false;
            }

        }
        catch(IOException ex) 
        {
            return false;
            throw new ArgumentException("something went wrong an error" + ex + "is been cought");

        }
        return true;


    }

4 个答案:

答案 0 :(得分:2)

StockHandler为空。

如果StockHandler不是static类,则需要先创建它的实例,然后再调用其中的方法:

var handler = new StockHandler();
SaveFileCheck = handler.SaveChangesToFile();

或者,如果StockHandler是成员变量:

StockHandler = new // something

答案 1 :(得分:2)

你没有显示StockHandler是什么,或者你从哪里得到它 - 但看起来它是空的。您需要它作为对有效对象的引用。我们只能从您提供的代码中说出更多内容。

请注意,这与返回bool的方法 nothing 无关。

答案 2 :(得分:1)

可能StockHandler为空,或者SaveChangesToFile方法中的某些内容为null或无效。

修改

见这里:

private StockHelper StockHandler;
StockHandler.SaveChangesToFile(); // = bang :(

您需要初始化StockHelper实例:

private StockHelper StockHandler = new StockHelper();
StockHandler.SaveChangesToFile(); // = okay :)

我假设此代码无法编译,这可能意味着StockHandler为空。否则,错误可能指向SaveChangesToFile方法。

其次,您需要在SaveChangesToFile()方法中吞下异常(不建议),或者需要删除return语句并抛出异常。如果您决定抛出异常,它绝对不应该是ArgumentException,因为它与提供给方法的参数(或缺少参数)无关。

答案 3 :(得分:0)

什么是stockhandler - 你的SaveChangesToFile方法是一个实例方法 - 所以你有一个变量'StockHandler'实例化到任何类的实例包含方法SaveChangesToFile();