命名参数(C#)
2016-03-08 16:55
253 查看
命名参数,调用者可以显式为一个参数赋值。
命名参数打破了只能依据参数顺序决定哪个值赋给哪个参数的限制。利用命名参数,再结合可选参数,参数的个数和
顺序都可以随意根据实际要求进行控制。
看下面一个例子:
public NamedParaExample()
{
this.InitializeComponent();
//看作是可选参数
txtblk1.Text = DisplayPhoneInfo("微软");
//看作是命名参数
txtblk2.Text = DisplayPhoneInfo(brand: "微软");
//看作是可选参数
txtblk3.Text = DisplayPhoneInfo("小米", 699);
//看作是命名参数
//txtblk4.Text = DisplayPhoneInfo(brand: "小米", 699);此种写法错误。看作命名参数,那么所有参数的格式都要是命名参数的调用格式
txtblk4.Text = DisplayPhoneInfo(brand: "小米", price: 699);
//看作是可选参数(本意是想让价格保持默认值,只指定品牌和系统)
//不过明显是不对的,限制在于只能依照参数顺序决定参数赋值
//txtblk5.Text = DisplayPhoneInfo("魅族", "Flyme OS");
txtblk5.Text = DisplayPhoneInfo(brand: "魅族", operationSystem: "Flyme OS");//命名参数完全打破需要依照参数顺序来决定赋值的弊端
//命名参数的顺序可以无关,只要指定参数名即可
txtblk6.Text = DisplayPhoneInfo(price: 1099, brand: "乐视", operationSystem: "eUI");
txtblk7.Text = DisplayPhoneInfo("华为", 5);
txtblk8.Text = DisplayPhoneInfo(screenSize: 6, producer: "中兴");
}
string DisplayPhoneInfo(string brand,int price = default(int),string operationSystem = default(string))
{
string result = "手机信息";
result = string.Format("手机品牌:{0},手机价格:{1},手机系统:{2}",brand,price,operationSystem);
return result;
}
//下面的方法定义是错的,可选参数的差异不构成重载
//string DisplayPhoneInfo(string brand, int price, string operationSystem) { }
string DisplayPhoneInfo(string producer,int screenSize)
{
string result = "手机信息";
result = string.Format("手机厂商:{0},手机屏幕:{1}寸",producer,screenSize);
return result;
}
结果截图:
命名参数打破了只能依据参数顺序决定哪个值赋给哪个参数的限制。利用命名参数,再结合可选参数,参数的个数和
顺序都可以随意根据实际要求进行控制。
看下面一个例子:
public NamedParaExample()
{
this.InitializeComponent();
//看作是可选参数
txtblk1.Text = DisplayPhoneInfo("微软");
//看作是命名参数
txtblk2.Text = DisplayPhoneInfo(brand: "微软");
//看作是可选参数
txtblk3.Text = DisplayPhoneInfo("小米", 699);
//看作是命名参数
//txtblk4.Text = DisplayPhoneInfo(brand: "小米", 699);此种写法错误。看作命名参数,那么所有参数的格式都要是命名参数的调用格式
txtblk4.Text = DisplayPhoneInfo(brand: "小米", price: 699);
//看作是可选参数(本意是想让价格保持默认值,只指定品牌和系统)
//不过明显是不对的,限制在于只能依照参数顺序决定参数赋值
//txtblk5.Text = DisplayPhoneInfo("魅族", "Flyme OS");
txtblk5.Text = DisplayPhoneInfo(brand: "魅族", operationSystem: "Flyme OS");//命名参数完全打破需要依照参数顺序来决定赋值的弊端
//命名参数的顺序可以无关,只要指定参数名即可
txtblk6.Text = DisplayPhoneInfo(price: 1099, brand: "乐视", operationSystem: "eUI");
txtblk7.Text = DisplayPhoneInfo("华为", 5);
txtblk8.Text = DisplayPhoneInfo(screenSize: 6, producer: "中兴");
}
string DisplayPhoneInfo(string brand,int price = default(int),string operationSystem = default(string))
{
string result = "手机信息";
result = string.Format("手机品牌:{0},手机价格:{1},手机系统:{2}",brand,price,operationSystem);
return result;
}
//下面的方法定义是错的,可选参数的差异不构成重载
//string DisplayPhoneInfo(string brand, int price, string operationSystem) { }
string DisplayPhoneInfo(string producer,int screenSize)
{
string result = "手机信息";
result = string.Format("手机厂商:{0},手机屏幕:{1}寸",producer,screenSize);
return result;
}
结果截图:
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#比较二个数组并找出相同或不同元素的方法