可选参数的概念是:
使用了可选参数的方法在声明方法时将常量值赋给参数,以后调用该方法就不需要每个参数都指定了。
可选参数有一些注意点:
1.可选参数一定程度上解脱了一些情况下必须重载的需求。
2.可选参数一定要放在所有的参数最后。
3.可选参数可以有多个,但都必须排列放在所有参数的最后。
4.方法的所有参数都可以是可选参数
5.可选参数的默认值必须是常量(即必须在编译时确定的值)
看下面的例子:
public ParameterExample()
{
this.InitializeComponent();
//虽然BuyPhone方法定义有三个参数,但仍调用BuyPhone方法
//这里的price就是可选参数,如果不指定,就使用声明时赋给price的值;ScreenSize参数也是同理
txtblk.Text = BuyPhone("微软");
}
//BuyPhone存在两个可选参数:price,ScreenSize
static string BuyPhone(string brand, int price = 9999,double ScreenSize = 5.5)
{
string result = "我要买" + price +"元" + ScreenSize + "寸的" + brand + "手机";
return result;
}
//这边只是一个示例,说明方法的所有参数都可以是可选参数
//调用时:BuyComputer() -- 我要买13888元12.3寸的Surface Pro电脑
//调用时:BuyComputer("yoga") -- 我要买13888元12.3寸的yoga电脑
//调用时:BuyComputer("XPS",15888) -- 我要买15888元12.3寸的XPS电脑
//调用时:BuyComputer("Surface Book",20888,13.0) -- 我要买20888元13寸的Surface Book电脑
static string BuyComputer(string brand = "Surface Pro",int price = 13888, double ScreenSize = 12.3)
{
string result = "我要买" + price + "元" + ScreenSize + "寸的" + brand + "电脑";
return result;
}
private void RadioButton_Checked(object sender, RoutedEventArgs e)
{
int price;
RadioButton radioBtn = sender as RadioButton;
string priceStr = radioBtn.Content.ToString().Substring(0, radioBtn.Content.ToString().Length - 1);
//顺便注意一下TryParse的用法,在与Parse方法执行相同的操作下,使用TryParse往往会好一些
//Parse转换错误需要用try/catch来捕获异常,而TryParse方法显式返回bool型结果,通过out参数返回转换好的结果
if(int.TryParse(priceStr,out price))
{
//虽然BuyPhone方法有三个参数,但仍调用该方法,并只指定前两个参数,因为ScreenSize也是可选参数
txtblk.Text = BuyPhone("微软",price);
}
}
结果截图:
初始画面:
选择一个单选按钮后: