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 ParamsDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
public int calc1(int[] values)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
public int calc2(params int[] values)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
//コンパイルエラー
/*
public int calc3(params int[] values, string flag)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
*/
public int calc4(string flag, params int[] values)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
/*
public int calc5( params int[] values1, params int[] values2)
{
int result = 0;
for (int i = 0; i < values1.Length; i++) {
result += values1[i];
}
return result;
}
*/
private void button1_Click(object sender, EventArgs e)
{
int r = calc1(new int[] { 1, 3, 5, 2, 4 });
textBox1.Text = r.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
int[] ar = { 1, 3, 5, 2, 4 };
int r = calc1(ar);
textBox1.Text = r.ToString();
}
private void button3_Click(object sender, EventArgs e)
{
//エラー
/*
int r = calc1( 1, 3, 5, 2, 4 );
textBox1.Text = r.ToString();
*/
}
private void button4_Click(object sender, EventArgs e)
{
int r = calc2(new int[] { 1, 3, 5, 2, 4 });
textBox1.Text = r.ToString();
}
private void button5_Click(object sender, EventArgs e)
{
int[] ar = { 1, 3, 5, 2, 4 };
int r = calc2(ar);
textBox1.Text = r.ToString();
}
private void button6_Click(object sender, EventArgs e)
{
int r = calc2(1, 3, 5, 2, 4);
textBox1.Text = r.ToString();
}
}
}
calc1
メソッドは配列を引数にとるメソッドです。 public int calc1(int[] values)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
int r = calc1(new int[] { 1, 3, 5, 2, 4 });
int[] ar = { 1, 3, 5, 2, 4 };
int r = calc1(ar);
//エラー
int r = calc1( 1, 3, 5, 2, 4 );
calc2
メソッドは配列を引数にとるメソッドですが、params キーワードを型名の前に記述しています。 public int calc2(params int[] values)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
int r = calc2(new int[] { 1, 3, 5, 2, 4 });
int[] ar = { 1, 3, 5, 2, 4 };
int r = calc2(ar);
int r = calc2(1, 3, 5, 2, 4);
//コンパイルエラー
public int calc3(params int[] values, string flag)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
public int calc4(string flag, params int[] values)
{
int result = 0;
for (int i = 0; i < values.Length; i++) {
result += values[i];
}
return result;
}
public int calc5( params int[] values1, params int[] values2)
{
int result = 0;
for (int i = 0; i < values1.Length; i++) {
result += values1[i];
}
return result;
}