C# 入門

ホーム > C# の基礎 > out 変数

out 変数

このビデオでは C# 7.0 で導入された out 変数についてデモによって説明しています。 C# 7.0 では事前に宣言せずに、 メソッド呼び出しの中で変数を宣言することができ、かつ、省略する時はアンダースコアが使えます。

ここでは C# 7.0 で導入された out 変数 (out variables) について説明します。

C# 6.0 までは、out パラメータ修飾子 (out parameter modifier) がついた引数にパラメータを渡すときには、変数を事前に宣言する必要がありました。

例えば次の例では、out パラメータをもつ GetEmployee メソッドに変数を渡す前に string 型の n と t、int 型の a を宣言しています。

using System;

namespace outvar1
{
    class Program
    {
        static void Main(string[] args)
        {
            string n, t;
            int a;

            GetEmployee(out n, out a, out t);
            Console.WriteLine($"RESULT: {n}, {a}, {t}");
        }

        public static void GetEmployee(
            out string name, 
            out int age, 
            out string title)
        {
            name = "Hanako Yamada";
            age = 30;
            title = "Manager";
        }
    }
}

しかし、C# 7.0 では、上記のように事前に宣言する必要はなくなりました。

out パラメータに変数を渡すと同時に、変数を宣言することが可能になりました。

using System;

namespace outvar1
{
    class Program
    {
        static void Main(string[] args)
        {
            //string n, t;
            //int a;

            GetEmployee(out string n, out int a, out string t);
            Console.WriteLine($"RESULT: {n}, {a}, {t}");
        }
        ...
    }
}

また、もし受け取る値が不要の場合は、_ (アンダースコア) を使うことができます。

次の例では、呼び出し側では三つ目の引数が不要として、_ を渡しています。


     GetEmployee(out string n, out int a, out _);
     Console.WriteLine($"RESULT: {n}, {a}");

これによって、不要な変数そのものも宣言する必要がなくなりました。

ホーム > C# の基礎 > out 変数