我有一个简单的扩展方法,我想用它来将项目添加到项目数组中。
public static T[] addElement<T>(this T[] array, T elementToAdd)
{
var list = new List<T>(array) { elementToAdd };
return list.ToArray();
}
这可行,但是当我使用它时,我必须将数组设置为等于返回值。我看到我正在返回一个数组。我可能希望这种方法无效,但我希望添加该项目。有没有人对我需要做什么有什么想法,让这项工作按照我想要的方式进行?
而不是someArray = someArray.addElement(item)
,我只想做someArray.addElement(item)
,然后someArray准备好了。我在这里缺少什么?
答案 0 :(得分:8)
内置数组具有固定大小,因此无法以这种方式进行修改。如果您想要一个动态大小的数组,请使用List<T>
。
答案 1 :(得分:2)
如果你可以使用ref
扩展方法,那么它是可能的,但根本不是一个好的方法。值得庆幸的是,他们不受支持。
如果你绝对必须有这样的东西,你可以使用带有ref
参数的静态方法:
public static class ArrayHelp {
public static void addElement<T>(ref T[] array, T elementToAdd)
{
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = elementToAdd;
}
}
但这与你当前的解决方案一样丑陋(如果不是更多)。
答案 2 :(得分:1)
这是不可能的。调整阵列大小的唯一方法是创建一个新阵列。如果您需要经常向项目添加项目,请使用List
,它们是专为此目的而设计的。