我取了一个列表并在其中插入了一些值
public List<DateTime> dates = new List<DateTime>();
DateTime dt1 = DateTime.Parse(12/1/2012);
DateTime dt2 = DateTime.Parse(12/6/2012);
if (dt1 <= dt2)
{
for (DateTime dt = dt1; dt <= dt2; dt = dt.AddDays(1))
{
dates.Add(dt);
}
}
现在我想把这个列表,即日期作为一个参数传递给一些函数,如-
somefunction(dates);
我到底该怎么做呢?
5条答案
按热度按时间sqserrrh1#
你得这样做,
rxztt3cl2#
k4emjkb13#
应该始终避免使用
List<T>
作为参数,这不仅是因为这种模式减少了调用方将数据存储在不同类型集合中的机会,而且调用方必须首先将数据转换为List
。将一个
IEnumerable
转换成一个List
需要O(n)的复杂度,这是绝对不必要的,而且它还创建了一个新的对象。TL;DR你应该根据你想对你的收藏做什么来使用一个合适的接口,比如
IEnumerable
或IQueryable
。)在您的情况下:
xuo3flqw4#
可以将其作为
List<DateTime>
传递但是,最好尽可能使用最通用的(通常是基本的)接口,因此我将使用
或
如果不希望方法修改列表(添加或删除元素),您可能还希望在将列表传递给方法之前调用
.AsReadOnly()
。e7arh2l65#
我需要这个在C#中的Unity,所以我想它可能对某些人有用。这是一个将AudioClip列表传递给名为
ChooseClip
的函数的示例: