Array类对象中的“索引超出了数组的范围”错误

时间:2013-10-21 08:48:18

标签: arrays sharepoint-2013 indexoutofboundsexception

我想将所有用户配置文件多个字符串值存储到Array对象。我的代码是:

                    if (upm != null)
                    {
                        for (int i = 0; i < otherMembers.Count; i++)
                        {
                            UserProfile user = upm.GetUserProfile(otherMembers[i]);


                            int j = 0;
                            if (user[FieldNames.OtherDepartment].Count != 0)
                            {

                                UserProfileValueCollection valueCollection = user[FieldNames.OtherDepartment];
                                Array otherDepartments = Array.CreateInstance(typeof(string), user[FieldNames.OtherDepartment].Count);
                                foreach (object value in valueCollection)
                                {
                                    otherDepartments.SetValue(value.ToString(), j);
                                    j++;
                                }

                                j = otherDepartments.Length;
                                otherDepartments.SetValue(fieldValue.Label, j);

                                user[FieldNames.OtherDepartment].Value = otherDepartments;
                            }
                            else
                            {
                                user[FieldNames.OtherDepartment].Value = fieldValue.Label;
                            }
                            //user[FieldNames.OtherDepartment].Value += fieldValue.Label;
                            user.Commit();
                        }
                    }

我在otherDepartments.SetValue(fieldValue.Label, j);循环之外的第forech()行收到错误。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您的代码中有一个错误。

尝试改变这一点:

j = otherDepartments.Length;

进入这个:

j = otherDepartments.Length-1;

由于数组索引通常从0开始,因此最后一个元素是length-1