Web検索はbingがおすすめ!

メソッド、関数呼び出しの引数に "out (型名) (変数名)" と記述されている場合の動作 - C#

C#でメソッド、関数呼び出しの引数に "out (型名) (変数名)" と記述されている場合の動作について紹介します。

概要

新しいC# (C#7) 以降を利用している場合、メソッドや関数の呼び出しで
out (型名) (変数名)
とコードが記述されている場合があります。

書式例

  private int Func(out int x)
  {
    ...
  }
のメソッドが定義されている場合に
  int result = Func(out int input);
と記述されます。

動作

従来のC#では、outに変数名を渡す場合は事前に変数の宣言が必要でしたが、C#7ではメソッド、関数の呼び出し時に変数をせんげんできるようになり、上記の書式が利用できます。下記の2つの書式は同じ意味になります。
従来の書式
  int input;
  int result = Func(out input);
新しい書式
  int result = Func(out int input);

プログラム例

UI

下図のUIを作成します。フォームにButtonと複数行のTextBoxを配置します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PassingArgsByOut
{
  public partial class FormNewOut : Form
  {
    public FormNewOut()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      int z = Func(out int ox, out int oy);
    
      textBox1.Text += string.Format("x:{0:d}\r\n", ox);
      textBox1.Text += string.Format("y:{0:d}\r\n", oy);
      textBox1.Text += string.Format("z:{0:d}\r\n", z);

    }
    private int Func(out int a, out int b)
    {
      a = 240;
      b = 160;
      return a - b;
    }
  }
}

解説

動作はoutを利用した関数呼び出しと同様です。メソッドのパラメータにoutを利用した場合動作については「メソッド、関数の引数のoutパラメーター渡し」の記事を参照して下さい。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[button1]をクリックします。下図の表示結果となります。outパラメーターにより、Funcメソッドのパラメータ変数にFunc内で設定された値が反映されていることが確認できます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2017-10-07
作成日: 2017-04-18
iPentec all rights reserverd.