how to pass list as parameter in function

I have taken a list and insert some value in it

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);                    
    }       
}

Now I want pass this List i.e dates as a parameter to some function like-

somefunction(dates);

How exactly can i achieve this?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You need to do it like this,

void Yourfunction(List<DateTime> dates )
{

}

Method 2

public void SomeMethod(List<DateTime> dates)
{
    // do something
}

Method 3

You should always avoid using List<T> as a parameter. Not only because this pattern reduces the opportunities of the caller to store the data in a different kind of collection, but also the caller has to convert the data into a List first.

Converting an IEnumerable into a List costs O(n) complexity which is absolutely unneccessary. And it also creates a new object.

TL;DR you should always use a proper interface like IEnumerable or IQueryable based on what do you want to do with your collection. 😉

In your case:

public void foo(IEnumerable<DateTime> dateTimes)
{
}

Method 4

You can pass it as a List<DateTime>

public void somefunction(List<DateTime> dates)
{
}

However, it’s better to use the most generic (as in general, base) interface possible, so I would use

public void somefunction(IEnumerable<DateTime> dates)
{
}

or

public void somefunction(ICollection<DateTime> dates)
{
}

You might also want to call .AsReadOnly() before passing the list to the method if you don’t want the method to modify the list – add or remove elements.

Method 5

I need this for Unity in C# so I thought that it might be useful for some one. This is an example of passing a list of AudioSources to whatever function you want:

private void ChooseClip(GameObject audioSourceGameObject , List<AudioClip> sources) {
    audioSourceGameObject.GetComponent<AudioSource> ().clip = sources [0];
}


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x