空引用错误C#多个对象

时间:2014-07-16 13:15:59

标签: c# oop variables nullreferenceexception

我有以下构造函数:

private PicklistHelper(string docId, string prodId, string user, string formProdId, string filepath,string parts)
    {
        this.documentId = docId;
        this.prodId = prodId;
        this.user = user;
        this.filepath = filepath;
        this.parts = parts;
        this.formProdId = formProdId;
        Log.Message("test parts = " + this.parts);
    }

logmessage确实显示了parts变量的值。 之后我调用了一个函数。

private ArrayList GetPartDatasets()
    {
        Log.Message("test line 1");
        ArrayList picklist = new ArrayList();
        Log.Message("test line 2 " + parts);
        string[] partIds = parts.Split(new[] { ';' });
        Log.Message("test line 3");

第二个测试行出现在日志中,但parts变量为空。之后出现空引用错误。

PicklistHelper对象是在一个连续多次调用的函数中创建的。 知道导致问题的原因吗?

3 个答案:

答案 0 :(得分:0)

问题是parts为空。

基本上,我可以从您提供评论的代码中找到两个可能的原因:

  1. 如果您说的是真的,并且在您的应用程序流程中任何可想到的情况下至少调用一次精确的PickListHelper构造函数,则仍然可能无论调用 PicklistHelper正在为null参数传递parts。这可以在构造函数内部通过类似if (parts == null) throw new ArgumentNullException("parts");的内容进行检查,因为您需要parts参数。否则你应该找出谁/什么叫PicklistHelper
  2. 方法GetPartDatasetsparts字段初始化之前或重置为null之后调用。

答案 1 :(得分:0)

空字符串是P.I.T.A.在我们的软件中,我们不会一致地处理字符串,因此我们在空字符串上调用方法。

试试这个

private PicklistHelper(string docId, string prodId, string user, string formProdId, string    filepath,string parts)
    {
        this.documentId = docId??    string.Empty;
        this.prodId     = prodId??   string.Empty;
        this.user       = user??     string.Empty;
        this.filepath   = filepath?? string.Empty;
        this.parts      = parts??    string.Empty;
        this.formProdId = formProdId?? string.Empty;

        Log.Message("test parts = " + this.parts);
    }

答案 2 :(得分:0)

字符串部分;

 if (parts != null)
        {
            string[] partIds = parts.Split(new[] { ';' });
            Log.Message("test line 3" + partIds);
        }

听起来不错。 :)

的问候, Sekhar