C# 具有多个案例的多个Switch语句?
我正在尝试编写一个switch语句,该语句的效果与我在下面代码中显示的类似,但是(显然)它不起作用。不可能同时在两个组合框中选择某些内容。你有没有想过如何做到这一点?我正在更新一个较旧的程序,并试图不重新编写大量代码C# 具有多个案例的多个Switch语句?,c#,switch-statement,C#,Switch Statement,我正在尝试编写一个switch语句,该语句的效果与我在下面代码中显示的类似,但是(显然)它不起作用。不可能同时在两个组合框中选择某些内容。你有没有想过如何做到这一点?我正在更新一个较旧的程序,并试图不重新编写大量代码 switch ((cboMAIN.SelectedIndex) || (cboMAINalternate.SelectedIndex)) { case 0: OutputStri
switch ((cboMAIN.SelectedIndex) || (cboMAINalternate.SelectedIndex))
{
case 0:
OutputString1 = "A";
break;
case 1:
OutputString1 = "C";
break;
case 2:
OutputString1 = "E";
break;
case 3:
OutputString1 = "F";
break;
case 4:
OutputString1 = "I";
break;
case 5:
OutputString1 = "J";
break;
case 6:
OutputString1 = "K";
break;
}
试用
switch ((cboMAIN.SelectedIndex > -1) ? cboMAIN.SelectedIndex : cboMAINalternate.SelectedIndex)
{
试用
switch ((cboMAIN.SelectedIndex > -1) ? cboMAIN.SelectedIndex : cboMAINalternate.SelectedIndex)
{
不,那是不可能的(至少不是你现在的方式)
问题是,你想要实现什么?如果您想在两个索引之间进行某种切换,可以这样做:
bool useAlternative = ...;
switch(useAlternative ? cboMAINalternate.SelectedIndex : cboMAIN.Selectedindex) {
// ...
}
不,那是不可能的(至少不是你现在的方式)
问题是,你想要实现什么?如果您想在两个索引之间进行某种切换,可以这样做:
bool useAlternative = ...;
switch(useAlternative ? cboMAINalternate.SelectedIndex : cboMAIN.Selectedindex) {
// ...
}
在选择元素中总是有一个被选中的项目,所以你必须检查一个你认为没有选择的项目,例如第一个项目:
var item = cboMAIN.SelectedIndex;
if (item = 0) item = cboMAINalternate.SelectedIndex;
switch (item) {
...
在选择元素中总是有一个被选中的项目,所以你必须检查一个你认为没有选择的项目,例如第一个项目:
var item = cboMAIN.SelectedIndex;
if (item = 0) item = cboMAINalternate.SelectedIndex;
switch (item) {
...
可能是最简洁的方式:
switch (Math.Max(cboMAIN.SelectedIndex, cboMAINalternate.SelectedIndex))
{
// ...
}
可能是最简洁的方式:
switch (Math.Max(cboMAIN.SelectedIndex, cboMAINalternate.SelectedIndex))
{
// ...
}
根据,SelectedIndex
将返回-1
,如果组合框上的选择为空
下面的代码应该选择一个带有选择项的组合框
,并检查您的switch语句,如果两者都没有选择项,则失败:
ComboBox comboBoxToUse;
if (cboMAIN.SelectedIndex > -1)
{
comboBoxToUse = cboMAIN;
}
else if (cboMAINalternate.SelectedIndex > -1)
{
comboBoxToUse = cboMAINalternate;
}
else
{
throw new InvalidOperationException("Neither combo box contains a selection.");
}
switch (comboBoxToUse.SelectedIndex)
{
...
}
如果两个组合框
都有选择,您可能还希望抛出异常。根据,如果组合框
上的选择为空,SelectedIndex
将返回-1
下面的代码应该选择一个带有选择项的组合框,并检查您的switch语句,如果两者都没有选择项,则失败:
ComboBox comboBoxToUse;
if (cboMAIN.SelectedIndex > -1)
{
comboBoxToUse = cboMAIN;
}
else if (cboMAINalternate.SelectedIndex > -1)
{
comboBoxToUse = cboMAINalternate;
}
else
{
throw new InvalidOperationException("Neither combo box contains a selection.");
}
switch (comboBoxToUse.SelectedIndex)
{
...
}
如果两个
ComboBox
e都有一个选择,您可能还想抛出一个异常。这是有效的。我是编程新手;我以前从未使用过内联IF语句。很酷的解决方案@Dancalahan根据您的逻辑,其中一个总是有效的,使用内联条件检查主条件是有意义的;如果其值未分级,请使用替代选项。:-)我相信0是一个有效的索引;我想应该是cboMAIN.SelectedIndex>-1
。看,我最终不得不把它改成-1。除此之外,它工作得很好,但是,它工作得很好。我是编程新手;我以前从未使用过内联IF语句。很酷的解决方案@Dancalahan根据您的逻辑,其中一个总是有效的,使用内联条件检查主条件是有意义的;如果其值未分级,请使用替代选项。:-)我相信0是一个有效的索引;我想应该是cboMAIN.SelectedIndex>-1
。看,我最终不得不把它改成-1。除此之外,它工作得还不错。