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