我有以下构造函数:
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对象是在一个连续多次调用的函数中创建的。 知道导致问题的原因吗?
答案 0 :(得分:0)
问题是parts
为空。
基本上,我可以从您提供评论的代码中找到两个可能的原因:
PickListHelper
构造函数,则仍然可能无论调用 PicklistHelper
正在为null
参数传递parts
。这可以在构造函数内部通过类似if (parts == null) throw new ArgumentNullException("parts");
的内容进行检查,因为您需要parts参数。否则你应该找出谁/什么叫PicklistHelper
。GetPartDatasets
在parts
字段初始化之前或重置为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