【发布时间】:2015-03-27 02:06:24
【问题描述】:
我正在尝试创建一个通用方法,它将一个对象添加到给定的数组中。
我尝试了以下代码,但出现此错误:“属性、索引器或动态成员访问可能不会作为 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 会更干净 :-)
我错过了什么明显的东西吗?
【问题讨论】:
-
为什么要这样的方法?这是非常低效的。如果您需要添加项目,请首先使用
List<T>。即使你需要那个数组,你也可以在最后使用list.ToArray()。 -
该属性是否必须是
FooArray?为什么不使用List<T>的FooList。那么你甚至不需要这种方法。 -
引用或输出参数必须是可赋值变量msdn.microsoft.com/en-us/library/14akc2c7.aspx
-
它是一个数组,因为我有大量从 xsd 生成的类,并且它使用数组进行集合。