【问题标题】:Null Reference - How to tell which variable is the null reference? [duplicate]空引用 - 如何判断哪个变量是空引用? [复制]
【发布时间】:2019-10-15 02:23:56
【问题描述】:

好的 - 我有点困惑。我有一行代码放入 Try.Catch - 它给了我以下信息:

对象引用未设置为对象的实例。

代码行是:

            MainFormRef.xtraTabControl_Results.TabPages.Add(xtraTabPage_Results);

这些是 DevExpress 控件。

在这里,我将在例程开始时创建的 TabPage 添加到 TabControl_Results,这是我放置在表单上的控件。所以 - 我知道这两个对象都存在。我什至添加了引用它们的代码 - 它不会引发异常。
同样——这是我从代码中的另一个地方调用的例程——它运行良好。所以 - 我正在做的事情一定会导致当前代码路径中出现此错误。但我不得不承认我很困惑。
有没有办法判断哪个对象引用是空的?导致异常的代码行中的任何一个对象似乎都不是??

任何建议将不胜感激!

代码 - 导致异常

    public DevExpress.XtraTab.XtraTabPage AddResultGridTabObject()
    {
        DevExpress.XtraTab.XtraTabPage xtraTabPage_Results = new DevExpress.XtraTab.XtraTabPage();

        var NewTabObject = new UserControl_ResultsTab();
        NewTabObject.TrackerId = SavedTrackerId;
        NewTabObject.FormType = TAIIDFormType.ftResultsGrid;
        TabList.Add(NewTabObject);
        xtraTabPage_Results.Controls.Add(NewTabObject);     // Add to the Collection 
        NewTabObject.Dock = DockStyle.Fill;                 // Now have it take up the entire Tab
        try
        {
            MessageBox.Show("Name: " + 
                MainFormRef.xtraTabControl_Results.TabPages.Count.ToString());
            MainFormRef.xtraTabControl_Results.TabPages.Add(xtraTabPage_Results);
        }
        catch (Exception Error)
        {
            MessageBox.Show("Error while Saved Encrypted File: " + Error.Message);
        }
        MainFormRef.xtraTabControl_Results.SelectedTabPage = xtraTabPage_Results;
        return xtraTabPage_Results;
    }

【问题讨论】:

  • 通常我会通过调试器检查每个变量来逐步执行代码。
  • 我没有 DevExpress,但我的另一个想法是,XtraTabPage 控件可能需要设置某些属性,而该属性尚未设置。跨度>
  • 您可以在代码中添加检查以确定什么为空。
  • John,我将不得不与 DevExpress 核对 - 因为我在此代码中检查的每个变量 - 都显示为已分配...如果我发现发生了什么我会更新它...
  • 大家好 - 感谢您的回复!我一直在使用调试器并跟踪代码——但每个对象似乎都被正确分配了(?)——但我仍然得到空引用。 MainFormRef.xtraTabControl_Results.TabPages.Add(xtraTabPage_Results);此行上的对象和“NewTabObject”均已分配且不为空。我不得不承认我很困惑……我会向 DevExpress 确认可能发生的事情……

标签: c# exception null


【解决方案1】:

我知道以下方法:

  1. 调试和检查
  2. 日志记录

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 2019-03-24
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多