【C#】Multi Value Return

这次要来学习如何让函式返回多个值~

分别用Array~ Struct~ Tuple~ Output Parameters~ Reference~ ValueTuple~


学习目标: Multi Value Return 实务

学习难度: ☆☆☆


Returning by Array

using System;

namespace ConsoleApp1
{
    class MainProgram
    {
        static int[] MultipleReturns(int score1, int score2)
        {
            int[] array = new int[2];

            if (score1 > score2)
            {
                array[0] = score2;

                array[1] = score1;
            }

            if (array[0] < array[1])
            {
                array[0] = score1;

                array[1] = score2;
            }
            return array;
        }

        static void Main()
        {
            int[] array = MultipleReturns(90, 70);
        }
    }
}

Returning by Struct or Class

using System;

namespace ConsoleApp1
{
    struct Scores
    {
        public int score1;

        public int score2;
    }

    class MainProgram
    {
        static Scores MultipleReturns(int score1, int score2)
        {
            Scores scores = new Scores();

            if (score1 > score2)
            {
                scores.score1 = score2;

                scores.score2 = score1;
            }

            if (score1 < score2)
            {
                scores.score1 = score1;

                scores.score2 = score2;
            }

            return scores;
        }

        static void Main()
        {
            Scores scores = new Scores();

            scores = MultipleReturns(90, 70);
        }
    }
}

Returning by Tuple

using System;

namespace ConsoleApp1
{
    class MainProgram
    {
        static Tuple<int, int> MultipleReturns(int score1, int score2)
        {
            if (score1 > score2)
            {
                int temp = score2;

                score2 = score1;

                score1 = temp;
            }
            return new Tuple<int, int>(score1, score2);
        }

        static void Main()
        {
            var tuple = MultipleReturns(90, 70);
        }
    }
}

Returning by Output Parameters

using System;

namespace ConsoleApp1
{
    class MainProgram
    {
        static void MultipleReturns(out int score1, out int score2, out int avg)
        {
            score1 = 60;

            score2 = 100;

            avg = (score2 + score1) / 2;
        }

        static void Main()
        {
            int score1, score2, avg;

            MultipleReturns(out score1, out score2, out avg);
        }
    }
}

Returning by Ref


using System;

namespace ConsoleApp1
{
    class MainProgram
    {
        static void MultipleReturns(ref int score1, ref int score2, ref int avg)
        {
            score1 = 60;

            score2 = 100;

            avg = (score2 + score1) / 2;
        }

        static void Main()
        {
            int score1 = 0, score2 = 0, avg = 0;

            MultipleReturns(ref score1, ref score2, ref avg);
        }
    }
}

Returning by Value Tuple (需用NuGet装System.ValueTuple)

using System;

namespace ConsoleApp1
{
class MainProgram
{
static (int, int) MultipleReturns(int score1, int score2)
{

        if (score1 > score2)
        {
            int temp = score2;

            score2 = score1;

            score1 = temp;
        }

        return (score1, score2);
    }

    static void Main()
    {
        (int, int) output = MultipleReturns(90, 70);

        Console.WriteLine(output.Item1 + "" + output.Item2);
    }
}

}


-----

参考资料:

https://www.c-sharpcorner.com/UploadFile/9b86d4/how-to-return-multiple-values-from-a-function-in-C-Sharp/

<<:  Simplifying Conditional Logic

>>:  【C++】Binary Search

Day11-Kubernetes 那些事 - Ingress 篇(三)

前言 昨天的文章提到 Ingress 其实也可以用来做负载平衡,只是要利用其他种方式来实现,所以接下...

整合 Firestore SDK 到便利贴应用程序

首先来看看如何取用 Firebase SDK 的服务: val firestore = Fireba...

D20 - 浓浓咖啡香的深拷贝、浅拷贝

前言 什麽是拷贝? 今天朋友想 copy 你的报告,最简单的就是影印一份给他,但是当你修改报告中的内...

Cloud Monitor

Cloud Monitor 如果使用了GCP平台,要如何捕捉以及监控错误,我想大概多半会使用Clo...

[Day25] 透过GCP实作(1/4):透过Cloud Function直接拉取资料

接下来这几天,将会带领各位以GCP的架构的视角。 向各位阐述我们先前进行的DialogFLow F...