1

我开始学习 C# 几天了,sr,如果这是个愚蠢的问题!我有一个这样的字符串数组

private readonly string[] algorithm_list = {
                                              "Genetic Algorithm",
                                              "Dynamic Algorithm"
                                          };

和我的代码

switch (al_choose)
            {
                case algorithm_list[0]:
                    break;
                case algorithm_list[1]:
                    break;
                default:

            }

错误是 algorithm_list[0] 不是常数!所以我尝试其他声明,如

private readonly string[] algorithm_list 

或者

private contant string[] algorithm_list

但是还是不行???那么,对我有什么建议吗?非常感谢!

4

2 回答 2

7

对于这些情况,最好使用Enum

public enum AlgorithmList
{
        GeneticAlgorithm,
        DynamicAlgorithm
}

然后:

switch (al_choose)
{
    case AlgorithmList.GeneticAlgorithm:
        break;
    case AlgorithmList.DynamicAlgorithm:
        break;
    default:
        break;
}

编辑如果你要将值绑定Enum到 aComboBox你可以这样做:

yourCombobox.ItemsSource = Enum.GetValues(typeof(AlgorithmList)).Cast<AlgorithmList>();
于 2013-03-30T05:19:44.927 回答
4

数组元素不是常量,因此您不能在 switch 语句中使用数组元素。

选项:

  • 用内联常量case "Genetic Algorithm":...或实际常量值替换数组元素的使用const string Choice1="Genetic Algorithm";... case Choice1:...
  • 使用if语句序列: if (al_choose == algorithm_list[0]) { /*do something*/ }
  • standard approach for such switch statement is dictionary of "choice" to "Action delegate", but I'd not jump into that.
于 2013-03-30T05:20:11.367 回答