在 C# 中使用 ref 动态数组参数

Using ref dynamic array parameter in C#

我正在尝试创建一个通用方法,将对象添加到给定数组。
我尝试了以下代码,但出现此错误:"A property, indexer or dynamic member access may not be passed as an out or ref parameter"

 public void Main()
 {
     Foo newObject = new Foo();
     AddObjectToArray<Foo>(ref _allMyData.FooArray, newObject);
 }

 public void AddObjectToArray<T>(ref T[] array, T newObject)
 {
     var list = array.ToList();
     list.Add(newObject);
     array = list.ToArray();
 }

我可以通过删除 ref 并像这样返回数组来解决它:

 _allMyData.FooArray = AddObjectToArray<Foo>(_allMyData.FooArray, newObject);

但如果我只使用 ref 的话会更干净:-)
我是否漏掉了一些明显的东西?

您不能为 ref 参数使用 属性。您需要取出参考,拨打电话,然后放回去:

Foo[] arr = _allMyData.FooArray;
AddObjectToArray<Foo>(ref arr, newObject);
_allMyData.FooArray = arr;

因此,您可能首先要重新考虑使用数组。无论如何,将项目添加到数组是非常低效的,因为您每次都必须复制整个数组内容。