none
二维数组常量作为Attribute的参数时编译错误 RRS feed

  • 常规讨论

  • 在对代码元素应用特性时,给特性传递的参数应该是常量,但是当传递参数是一维常量数组时一切正常,而二维常量数组编译时会报错。

    错误是:特性实参必须是特性形参类型的常量表达式、typeof 表达式或数组创建表达式

    比如说定义一个特性:

    class MyAttribute : Attribute
    {
      public MyAttribute(object obj){ }
    }


    下面的应用方式编译通过

    [My(new int[] { 1, 2, 3, 4 })]
    class MyClass{ }


    下面的应用方式会编译时出错

    [My(new int[,] { { 1, 2 }, { 3, 4 } })]
    class MyClass { }

    在msdn里看了好多文章也没有找到原因……

    是两个类型的差别造成的吗?一位数组和二维数组之间有在编译时什么差别?

    请高手不吝赐教。

    2013年1月25日 11:44

全部回复