我正在尝试创建此辅助方法,并且不确定如何处理此索引。当它在我的帮助器中遇到新的类初始化器时,我不断使索引超出范围:
public static void AddColumn(this ColumnElementType[] columnListToAddTo,
string name, string value)
{
// Add a new column to the column list
columnListToAddTo[columnListToAddTo.Length] = new ColumnElementType
{
NAME = name,
VALUE = value
};
}
设置和使用帮助程序的示例:
ColumnElementType[] columns = new ColumnElementType[3]; columns.AddColumn(Constants.EmailColumnName, email); columns.AddColumn(Constants.FirstNameColumnName, firstName); columns.AddColumn(Constants.LastNameColumnName, lastName);
答案 0 :(得分:4)
使用List<ColumnElementType>
代替ColumnElementType[]
答案 1 :(得分:2)
这不起作用,因为columnListToAddTo[columnListToAddTo.Length]
将始终返回3(您声明的数组的长度)。因此:
Length-1
,也总是将新元素放在同一个数组位置(覆盖对先前添加的元素的引用)此外,由于无法扩展数组(您必须将内容复制到更大的新数组),我还建议使用List<ColumnElementType>
或ArrayList
(如果你不能使用泛型。)
如果你仍想使用数组,那么你应该扩展你的helper方法以获取一个索引参数,在哪里添加新元素,例如:
ColumnElementType[] columns = new ColumnElementType[3];
int index = 0;
columns.AddColumn(Constants.EmailColumnName, email, index++);
columns.AddColumn(Constants.FirstNameColumnName, firstName, index++);
columns.AddColumn(Constants.LastNameColumnName, lastName, index++);
//...
public static void AddColumn(..., int index)
{
// Add a new column to the column list
columnListToAddTo[index] = new ColumnElementType { ... };
}
答案 2 :(得分:1)
columnListToAddTo[columnListToAddTo.Length - 1]
因为索引从0开始