Gå til indholdet

N290 Tuple

Du skal skabe en ny konsol applikation med en enkelt ny statisk metode kaldet FindSumOgGns. Den tager to argumenter - begge double - og skal returnere en tuple med sum (double) og gennemsnit (double):

Du skal ende med at kunne kalde den således:

(double sum, double gns) resultat = FindSumOgGns(5.4, 10.5);
Console.WriteLine($"Sum: {resultat.sum:n2}");
Console.WriteLine($"Gns: {resultat.gns:n2}");

// eller

var resultat2 = FindSumOgGns(5.4, 10.5);            
Console.WriteLine($"Sum: {resultat2.sum:n2}");
Console.WriteLine($"Gns: {resultat2.gns:n2}");
Prøv også at “deconstruct” returværdi til to variabler.

Info

Prøv også at skabe din egen klasse der kan bruges som returværdi, og dan en FindSumOgGns2-metode der returnerer den i stedet. Kan du se hvad du sparer ved at bruge en tuple i stedet? Se løsning.

Klik for at se et forslag til en løsning
namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {

            (double sum, double gns) resultat = FindSumOgGns(5.4, 10.5);
            Console.WriteLine($"Sum: {resultat.sum:n2}");
            Console.WriteLine($"Gns: {resultat.gns:n2}");

            // eller

            var resultat1 = FindSumOgGns(5.4, 10.5);
            Console.WriteLine($"Sum: {resultat1.Item1:n2}");
            Console.WriteLine($"Gns: {resultat1.Item2:n2}");

            // eller

            var resultat2 = FindSumOgGns(5.4, 10.5);
            Console.WriteLine($"Sum: {resultat2.sum:n2}");
            Console.WriteLine($"Gns: {resultat2.gns:n2}");

            var (s, g) = FindSumOgGns(5.4, 10.5);
            Console.WriteLine($"Sum: {s:n2}");
            Console.WriteLine($"Gns: {g:n2}");

            MinType resultat3 = FindSumOgGns2(5.4, 10.5);
            Console.WriteLine($"Sum: {resultat3.Sum:n2}");
            Console.WriteLine($"Gns: {resultat3.Gns:n2}");
        }

        static (double sum, double gns) FindSumOgGns(double a, double b)
        {
            double s = a + b;
            double g = s / 2;
            return (s, g);
        }

        static MinType FindSumOgGns2(double a, double b)
        {
            double s = a + b;
            double g = s / 2;
            return new MinType() { Sum = s, Gns = s / 2 };
        }
    }

    class MinType {
        public double Sum { get; set; }
        public double Gns { get; set; }
    }
}