[C#] メソッドの引数に可変長引数(params)で且つ参照渡し(refキーワード)をしたい
バージョン
C# 8.0
概要
メソッドの引数に可変長で且つ参照渡しをしたい。
結論から書くと、paramsとrefキーワードを併用することができないので、
Actionクラスを可変長引数(params)で渡して対応する。
コード
int型配列に格納された値をチェックや加工をして、順番に画面のテキストボックスにセットする。
public void Sample()
{
int[] vals = { 1, 22, 333};
SetData(vals,
x => { this.HogeTextBox.Text = x.ToString(); },
x => { this.FugaTextBox.Text = x.ToString(); },
x => { this.HogeFugaTextBox.Text = x.ToString(); } );
}
public void SetData(int[] vals, params Action<int>[] actions)
{
if(vals.Length != actions.Length) {
return;
}
for(int i = 0; i < vals.Length; i++) {
var tempVal = vals[i];
// ここで値をチェックや加工する
// something
// 値をセットする
actions[i](tempVal);
}
}
