【问题标题】:Why am I getting the Exception Object reference not set to an instance of an object [duplicate]为什么我没有将异常对象引用设置为对象的实例[重复]
【发布时间】:2015-04-04 05:12:26
【问题描述】:

我有以下方法:

public string GetReadersAsListXML()
    {
        StringBuilder sbXML = new StringBuilder();

        sbXML.Append("<items>" + "\r\n");

        string filePath = ConfigurationManager.AppSettings["RFIDScannerConfiguration"];

        XmlReaderSettings readerSettings = new XmlReaderSettings();
        readerSettings.IgnoreComments = true;

        using (XmlReader reader = XmlReader.Create(filePath, readerSettings))
        {
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.LocalName == "add")
                    {
                        int ListenerNumber = 1;

                        string Key = reader.GetAttribute("key");
                        Key = Key.Remove(Key.Length - 3);
                        string Value = reader.GetAttribute("value");

                        if (Key == "Active")
                        {
                            sbXML.Append("<item>" + "\r\n");
                            sbXML.Append("<id>Listener" + ListenerNumber + "</id>" + "\r\n");
                            sbXML.Append("<attributes>" + "\r\n");
                            ListenerNumber++;
                        }

                        sbXML.Append("<attribute>" + "\r\n");
                        sbXML.Append("<code>" + Key + "</code>" + "\r\n");
                        sbXML.Append("<value><![CDATA[" + Value + "]]></value>" + "\r\n");
                        sbXML.Append("</attribute>" + "\r\n");
                    }
                }
            }

        }

        return sbXML.ToString();
    }

我用来解析 XML 文件。

我想删除字符串 'Key' 的最后 3 个字符。

但是,我收到以下错误:

'Object reference not set to an instance of an object'.

我以前使用过.remove方法,方法和以前一模一样,效果很好。

我知道这是行:

Key = Key.Remove(Key.Length - 3);

导致问题,但为什么设置正确?

【问题讨论】:

  • 检查是否(键!= null)

标签: c# string


【解决方案1】:

Key 不为空吗?当然它是空的。因此,您会收到此错误。

为了避免这种情况,请在删除所需的内容之前检查:

if(Key!=null && Key.Length>3)
    Key = Key.Remove(Key.Length - 3);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多