如何使用C#选择和指定多个对象中的一个?
我有以下代码:如何使用C#选择和指定多个对象中的一个?,c#,C#,我有以下代码: void openPicker(object sender, EventArgs e) { if (sender != null) { var a = sender; Picker pkr = sender == ati ? atiPicker : ptiPicker; pkr.Focus(); } } 代码运行良好,但我需要能够将pkr分配给以
void openPicker(object sender, EventArgs e) {
if (sender != null)
{
var a = sender;
Picker pkr = sender == ati ? atiPicker : ptiPicker;
pkr.Focus();
}
}
代码运行良好,但我需要能够将pkr分配给以下各项之一:
atiPicker, ptiPiker, noaPicker prtPicker cfsPicker coPicker
基于发送方是其中一个
ati, pti, not, prt, cfs or co
我想我可以用很多if语句来实现这一点,但有没有更好的方法来实现这一点?如评论中所述,您可以使用
词典
:
但是,每次查询映射中给定键的值时,都会返回附加到任何发件人类型的该类型的新实例
void openPicker(object sender, EventArgs e) {
if (sender != null)
{
var a = sender;
Picker pkr = sender == ati ? atiPicker : ptiPicker;
pkr.Focus();
}
}
可更改为:
Dictionary<object, Picker> bob = new Dictionary<object, Picker>() { { ati, atiPicker}, { pti, ptiPicker }};
void openPicker(object sender, EventArgs e) {
if (sender != null)
{
var a = sender;
Picker pkr = bob[sender];
pkr.Focus();
}
}
Dictionary bob=newdictionary(){{ati,atiPicker},{pti,ptiPicker};
void openPicker(对象发送器、事件参数){
if(发送方!=null)
{
var a=发送方;
选择器pkr=bob[sender];
pkr.Focus();
}
}
字典
允许您将if
语句编码为一个switch语句。试试switch语句
Picker pkr = new Picker();
switch(sender){
case ati:
pkr = atiPicker;
break;
case pti:
pkr = ptiPicker;
break;
case noa:
pkr = noaPicker;
break;
case prt:
pkr = prtPicker;
break;
case cfs:
pkr = cfsPicker;
break;
case co:
pkr = coPicker;
break;
}
pkr.Focus();
使用
字典
。使用字典
并打开ati、pti、not、prt、cfs或co
(在@mjwills上展开)可以显示和示例。谢谢什么是ati?请注意,根据该类型,您的==
可能会检查引用是否相等,从而使一个类的两个实例不相等,即使它们的所有属性都相等。
Dictionary<object, Picker> bob = new Dictionary<object, Picker>() { { ati, atiPicker}, { pti, ptiPicker }};
void openPicker(object sender, EventArgs e) {
if (sender != null)
{
var a = sender;
Picker pkr = bob[sender];
pkr.Focus();
}
}
Picker pkr = new Picker();
switch(sender){
case ati:
pkr = atiPicker;
break;
case pti:
pkr = ptiPicker;
break;
case noa:
pkr = noaPicker;
break;
case prt:
pkr = prtPicker;
break;
case cfs:
pkr = cfsPicker;
break;
case co:
pkr = coPicker;
break;
}
pkr.Focus();