pubic const string[] strTest = new string[]{"礼拜1","礼拜2","礼拜3","礼拜4","礼拜5","礼拜6","礼拜tian"};
报错了The expression being assigned to `main.strTest must be constant
应该定义?不要告诉我用什么readonly,因为我后面要用到
switch(abc)
{
   case strTest[0] : xxxxx;break;
   ...
   ...case后必须是const的
谢谢!

解决方案 »

  1.   

    the only possible values for constants of reference types are string and null.
    数组做为引用类型,恐怕只能是null,建议用楼上的枚举
      

  2.   

    引用类型是不能被声明为const常量的,不过有一个例外:string。该引用类型const常量的值可以有两种情况,string或null。其实,string虽然是引用类型,但是.NET却对它特别处理,这种处理叫做字符串恒定性(immutable),使得string的值具有只读特性。 
      

  3.   

    请问怎么用啊?我没用过枚举我希望就是从某个外部文件读取一串字符串(固定不变的),然后有一个string abc我想放到在switch里,根据abc和字符串的比较做某个操作
    switch(abc)
    {
       case 字符串0:xxxx;break;
       case 字符串1:yyyy;break;
       ....
      

  4.   

    public enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };  //枚举星期
            protected void Page_Load(object sender, EventArgs e)
            {
                Day IsDay = Day.Mon;  //得到值
                switch (IsDay)
                {
                    case Day.Sun:
                    ..... //代码
                    break;
                    case Day.Mon:
                    ..... //代码
                    break;
                    case Day.Tue:
                    ..... //代码
                    break;
                    case Day.Wed:
                    ..... //代码
                    break;
                    default:
                    ..... //代码
                    break;
                }
            }这样再不会就完了
      

  5.   

    我不好我不好,这个方案不行,因为每次开始运行程序,都会读取一个外部数据库文件,得到一串(数量和内容都可能会变的)字符串,比如这次得到了string[] config = {“name1”,“name2”,“name3”},然后我要核对程序中期产生的一个string abc做判断
    switch(abc)
    {
       case config[0]:xxx;break;
       ...
    发现这样写不行,除非无奈,我不想写成
    if(abc==config[0])
       xxx;
    else if(abc==config[1])
       yyy;
    ....
    else if(abc==config[100])
       zzz;