c# 使用可变个数的参数有些情况下挺有用的。
最简单的例子比如累计表单(或textBox控件)数值,而累加项的个数不确定,或者说
为了保证更好的扩展性,在输入项增加时,方法依然适用。
例:
页面上列出6个TextBox,需要求和。
txtBox1,
txtBox2,
txtBox3,
txtBox4,
txtBox5,
txtBoxSumPay //显示合计,根据情况或许需要设为只读
1
//
C#中的可变参数使用
2 // 如果不用params 关键字,则参数调用的时候需要使用 new object[] {arg1, arg2}
3 public double SumPay( params int [] args) // 参数可能为其他类型,根据业务需要添加
4 {
5 double sum = 0 ;
6 foreach ( string arg in args)
7 {
8 if ( ! string .IsNullOrEmpty(arg))
9 sum += double .Parse(arg);
10 }
11 return sum;
12 }
2 // 如果不用params 关键字,则参数调用的时候需要使用 new object[] {arg1, arg2}
3 public double SumPay( params int [] args) // 参数可能为其他类型,根据业务需要添加
4 {
5 double sum = 0 ;
6 foreach ( string arg in args)
7 {
8 if ( ! string .IsNullOrEmpty(arg))
9 sum += double .Parse(arg);
10 }
11 return sum;
12 }
在需要使用 求和 功能的时候
可用如下方法调用:
1
...
2 ...
3 double sumpay = SumPay(txtBox1.Text, txtBox2.Text, txtBox3.Text, txtBox4.Text, txtBox5.Text);
4 if (sumpay != 0 ) // 这里是想在textBox的值都为空时,或0时,总和不再显示
5 lblUcPayTotal.Text = sumpay.ToString();
6 ...
7 ...
8
2 ...
3 double sumpay = SumPay(txtBox1.Text, txtBox2.Text, txtBox3.Text, txtBox4.Text, txtBox5.Text);
4 if (sumpay != 0 ) // 这里是想在textBox的值都为空时,或0时,总和不再显示
5 lblUcPayTotal.Text = sumpay.ToString();
6 ...
7 ...
8
//另外如果要想实现 每填写或修改 textBox项目的值后
//总和栏位能同步更新,可以添加 textBox_TextChanged事件到所有需要累加的textBox 空间上
//遍历所有的TextBox的textchanged事件,有些技巧,见另一篇随笔