这可能是个非常基本的问题,但我无法在任何地方找到答案。
我正在尝试使用C#循环输入并将结果放入数组中。根据我所读的,数组首先必须设置元素数量。
是否有一种方法可以仅循环并使数组元素的数量取决于输入的数量?
TIA
List
类有一个ToArray()方法,你可以在循环后使用它,如果你想将结果存储在数组中。你可以从方法中返回数组,或者在将其转换为数组后清除List对象,以避免数据的额外副本。而且更好的是,尽可能使用通用列表。自从它们在2.0中推出以来,我不认为我曾经使用过普通的ArrayList。
List<string> myNames = new List<string>();
myNames.Add("kevin");
string[] myNamesTurnedToStringArray = nyMames.ToArray();
public class Widgets : List<Widgets> // Widgest class defined elsewhere
{
public Widgets() : base() {}
public Widgets(IEnumerable<Widgets> items) : base(items) {}
public Widget GetWidgetById(int id)
{
// assuming only one ID possible
return this.Where(w => w.id == id).Single();
}
public string[] GetAllNames()
{
return this.Select(w => w.Name).ToArray();
}
}
//... later in some other class ....
Widgets w = new Widgets(dataFromDatabase);
Widget customerWidget = w.GetWidgetById(customerWidgetId);
string[] allNames = w.GetAllNames();
这是一种不错的面向对象编程方式,可以将列表功能封装在一个地方,并且通常是有机地分离您的关注点的好方法。
你想要使用一个List
。
看一下ArrayList集合。你可以给它一个初始分配大小,也可以使用Add
方法添加项目。
ArrayList的容量是ArrayList可以容纳的元素数量。当元素被添加到ArrayList中时,如果需要,容量会自动增加通过重新分配。容量可以通过调用TrimToSize或显式设置Capacity属性来减少。
当然,将其预先分配到合理的大小比从0开始逐个添加项目更有效率,但无论哪种方式都可以工作。