c#中的常量数组

本文关键字:数组 常量 | 更新日期: 2023-09-27 18:06:39

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

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

但它仍然不工作????有什么建议吗?非常感谢!

c#中的常量数组

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

public enum AlgorithmList
{
        GeneticAlgorithm,
        DynamicAlgorithm
}

:

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

EDIT如果您要将Enum的值绑定到ComboBox,您可以这样做:

yourCombobox.ItemsSource = Enum.GetValues(typeof(AlgorithmList)).Cast<AlgorithmList>();

数组元素不是常量,所以不能在switch语句中使用数组元素。

选项:

  • 将数组元素替换为内联常量case "Genetic Algorithm":...或实际常量const string Choice1="Genetic Algorithm";... case Choice1:...
  • if语句的使用顺序:if (al_choose == algorithm_list[0]) { /*do something*/ }
  • 这种switch语句的标准方法是"选择"到"动作委托"的字典,但我不会跳入其中。