C#

【C#】Tuple(タプル)型の使い方

C#でのTuple(タプル)型の使い方をまとめます。
メソッドの戻り値は本来一つですが、Tuple型を使うことで、複数の戻り値を設定することができます。また、複数のオブジェクトをひとまとめにして扱うこともできます。
※C#7.0以上から使用可

【検証環境】.NET Framework 4.7.2

Tupleの使い方

C#のTupleはメソッドの戻り値を複数設定することができます。
つまり、複数の戻り値のためだけにわざわざクラスを定義する必要が無くなります。

// 名前のないタプルの宣言
var unnamed = ("one", "two");
var tuple1 = unnamed.Item1;
var tuple2 = unnamed.Item2;

// 名前付きのタプルの宣言
var named = (first: "one", second: "two");
tuple1 = named.first;
tuple2 = named.second;

// 複数のオブジェクトを返すメソッド
(string, int) GetTuple()
{
    return ("tuple1", 111);
}

サンプルコード

BMI値を計算して、BMI値(double型)と肥満かどうか(bool型)を返すメソッドを作成してみます。

class Person
{
    public string Name { get; set; }
    public int Height { get; set; }
    public int Weight { get; set; }

    public static List<Person> GetPepople()
    {
        return new List<Person>()
        {
            new Person()
            {
                Name = "A",
                Height = 175,
                Weight = 70,
            },
            new Person()
            {
                Name = "B",
                Height = 150,
                Weight = 50,
            },
            new Person()
            {
                Name = "C",
                Height = 190,
                Weight = 60,
            },
            new Person()
            {
                Name = "D",
                Height = 160,
                Weight = 90,
            },
        };
    }
}

static void Main(string[] args)
{
    //BMI値と肥満判定をタプルでまとめて返す
    var people = Person.GetPepople();
    foreach (var person in people)
    {
        var tuple = GetBMI(person);
        Console.WriteLine($"{person.Name}さんはBMIが{tuple.BMI}で、{(tuple.judge ? "肥満です" : "肥満ではありません")}");
    }
    Console.ReadLine();
    //AさんはBMIが22.9で、肥満ではありません
    //BさんはBMIが22.2で、肥満ではありません
    //CさんはBMIが16.6で、肥満ではありません
    //DさんはBMIが35.2で、肥満です

    (double BMI, bool judge) GetBMI(Person person)
    {
        //BMI=体重kg/(身長m)2
        var BMI = Math.Round(person.Weight / Math.Pow((double)person.Height / 100, 2), 1);

        if (BMI < 25)
        {
            //肥満でない
            return (BMI, false);
        }
        else
        {
            //肥満である
            return (BMI, true);
        }
    }
}

エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【フリーランス向け】安心保障と豊富な案件紹介 Midworks

Midworksは豊富な案件と「フリーランス」と「正社員」の良いとこ取りをした働き方を実現する手厚い保障が特徴です。

▼こんな方におすすめ
・現在正社員でフリーランスになろうか悩んでいる
・フリーランスとして働いているが、先行きが不安がある  (安定的な案件確保や保障など)
・自分の市場価値を知りたい、見合った案件で参画したい
・今後のキャリアビジョンを踏まえて案件を選びたい

【未経験向け】自宅で現役エンジニアから学べる TechAcademy

テックアカデミーは、現役エンジニアから学べるオンラインに特化したプログラミングスクールです。
講師は全員、通過率10%の選考に合格した現役エンジニア。
確かなスキルをもとに受講生をマンツーマンサポートします。


▼こんな方におすすめ
・自宅にいながらオンライン完結で勉強できる
・受講生に1人ずつ現役エンジニアのパーソナルメンターが専属でつく
・チャットで質問すればすぐに回答が返ってくる
・オリジナルサービスやオリジナルアプリなどの開発までサポート