Returning two lists in C#
There are many ways.
Return a collection of the lists. This isn't a nice way of doing it unless you don't know the amount of lists or if it is more than 2-3 lists.
public static IEnumerable<List<int>> Method2(int[] array, int number) { return new List<List<int>> { list1, list2 }; }
Create an object with properties for the list and return it:
public class YourType { public List<int> Prop1 { get; set; } public List<int> Prop2 { get; set; } } public static YourType Method2(int[] array, int number) { return new YourType { Prop1 = list1, Prop2 = list2 }; }
Return a tuple of two lists - Especially convenient if working with C# 7.0 tuples
public static (List<int>list1, List<int> list2) Method2(int[] array, int number) { return (new List<int>(), new List<int>()); } var (l1, l2) = Method2(arr,num);
Tuples prior to C# 7.0:
public static Tuple<List<int>, List<int>> Method2(int[] array, int number) { return Tuple.Create(list1, list2); } //usage var tuple = Method2(arr,num); var firstList = tuple.Item1; var secondList = tuple.Item2;
I'd go for options 2 or 3 depending on the coding style and where this code fits in the bigger scope. Before C# 7.0 I'd probably recommend on option 2.
If you are using later version of .NET and C# then simply use tuples (you may need to Install-Package "System.ValueTuple")
public static void Method1()
{
int[] array1 = { };
int number1 = 1;
(List<int> listA, List<int> listB) = Method2(array1, number1);
}
public static (List<int>, List<int>) Method2(int[] array, int number)
{
List<int> list1 = new List<int>();
List<int> list2 = new List<int>();
return (list1, list2); //<--This is where i need to return the second list
}
Method 1
public static void Method2(int[] array, out List<int> list1, out List<int> list2, int number)
{
list1= new List<int>();
list2= new List<int>();
...
}
Method 2
public static Tuple<List<int>, List<int>> Method2(int[] array, int number)
{
list1= new List<int>();
list2= new List<int>();
...
return Tuple.Create(list1, list2)
}
Method 3
Create a class that have 2 props list1, list 2, return that class, or just return array of lists
and finally on C# 7 you can just do
public static (List<int> list1, List<int> list2) Method2(int[] array, int number)
{
...
return (list1, list2)
}