属性构造函数的默认值?

我收到这个错误,

错误CS0182:属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

当我尝试写这样的东西时

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public class UrlAttribute : Attribute { public UrlAttribute(string pattern, string name=null) { // ... 

它甚至没有显示行号,但是当我取出=null位时它会消失。

实际上,错误只发生在我提供默认值依赖它(即我省略它)时

  [Url("/index")] 

我很想知道为什么会这样? “null”如何不是常量表达式?

我叫’虫’。

我希望你不介意,我向微软报告了这个错误。

更新:

我今天收到了微软的以下反馈,重点补充说。

感谢您报告此问题,您遇到过Visual Studio!

我们在代码中的属性上修复了可选的字符串参数。 您将在VS 2010之后的Visual Studio版本中看到此修复程序。

亚历克斯特纳

项目经理

Visual Basic和C#编译器

属性已经提供了默认参数。 您只需在属性上创建公共属性,然后可以在属性实例化过程中分配这些属性。 它已经有效,它已经很好理解,并且与框架属性的工作方式一致。 那么……为什么不使用该机制而不是尝试冗余地向构造函数添加默认参数?