There are many ways to return multiple parameters in the C# language. Modern versions of C# provide tuple syntax which are probably the most elegant.
using System;
using System.Collections.Generic;
class Program
{
static void GetTwoNumbersA(out int number1, out int number2)
{
// Part 1: assign out parameters.
number1 = 1;
number2 = 2;
}
static KeyValuePair<int, int> GetTwoNumbersB()
{
// Part 2: return KeyValuePair.
return new KeyValuePair<int, int>(1, 2);
}
static (int, int) GetTwoNumbersC()
{
// Part 3: return tuple.
return (1, 2);
}
static Tuple<int, int> GetTwoNumbersD()
{
// Part 4: return Tuple class.
return new Tuple<int, int>(1, 2);
}
static void Main()
{
// Part 5: test all the methods and ensure their output is identical.
GetTwoNumbersA(out int number1, out int number2);
Console.WriteLine($
"{number1} {number2}");
var resultB = GetTwoNumbersB();
Console.WriteLine($
"{resultB.Key} {resultB.Value}");
var resultC = GetTwoNumbersC();
Console.WriteLine($
"{resultC.Item1} {resultC.Item2}");
var resultD = GetTwoNumbersD();
Console.WriteLine($
"{resultD.Item1} {resultD.Item2}");
}
}
1 2
1 2
1 2
1 2