メソッド、関数呼び出しの引数に "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