我正在尝试创建一个泛型方法,将对象添加到给定数组中 我尝试了下面的代码,但是我收到了这个错误:“属性,索引器或动态成员访问可能不会作为out或ref参数传递”
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 :-)来更清洁 我错过了一些明显的东西吗?
答案 0 :(得分:1)
您不能将属性用于ref
参数。您需要获取引用,拨打电话并将其取回:
Foo[] arr = _allMyData.FooArray;
AddObjectToArray<Foo>(ref arr, newObject);
_allMyData.FooArray = arr;
因此,您可能希望首先重新考虑使用数组。无论如何,向数组添加项目效率非常低,因为每次都必须复制整个数组内容。