C# 可拓方法问题。为什么我需要使用someObj=someObj.somemethod();

C# 可拓方法问题。为什么我需要使用someObj=someObj.somemethod();,c#,arrays,generics,extension-methods,C#,Arrays,Generics,Extension Methods,我有一个简单的扩展方法,我想用它将一个项添加到一个项数组中 public static T[] addElement<T>(this T[] array, T elementToAdd) { var list = new List<T>(array) { elementToAdd }; return list.ToArray(); } publicstatict[]addElement(此T[]数组,T elementToAdd) { var list=

我有一个简单的扩展方法,我想用它将一个项添加到一个项数组中

public static T[] addElement<T>(this T[] array, T elementToAdd)
{
    var list = new List<T>(array) { elementToAdd };
    return list.ToArray();
}
publicstatict[]addElement(此T[]数组,T elementToAdd)
{
var list=新列表(数组){elementToAdd};
return list.ToArray();
}
这工作正常,但当我使用它时,我必须将数组设置为等于返回值。我看到我正在返回一个数组。我可能希望此方法无效,但我希望添加该项。有没有人对我需要做什么有什么想法,以使这项工作符合我的要求


我不想做
someArray=someArray.addElement(item)
,我只想做
someArray.addElement(item)
,然后someArray就可以开始了。这里缺少什么?

内置阵列具有固定大小,因此无法以这种方式进行修改。如果需要动态调整大小的数组,请使用
列表

这是不可能的。调整数组大小的唯一方法是创建一个新数组。如果您需要经常向数组中添加项,请使用
列表,它们就是为此而设计的。

如果您可以使用
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;
    }
}
公共静态类数组帮助{
公共静态无效加法器(参考T[]数组,T元素添加)
{
调整数组大小(参考数组,数组长度+1);
array[array.Length-1]=elementToAdd;
}
}

但这和您当前的解决方案一样难看(如果不是更难看的话)。

如果要添加项目,为什么要使用数组?只需使用一个列表和
ToArray()
on demand。。。