ECMA-334 C# Language Specification

24.1.2: Positional and named parameters

Attribute classes can have positional parameters and named parameters. Each public instance constructor for an attribute class defines a valid sequence of positional parameters for that attribute class. Each non-static public read-write field and property for an attribute class defines a named parameter for the attribute class.

[Example: The example
using System;  
[AttributeUsage(AttributeTargets.Class)]  
public class HelpAttribute: Attribute  
{  
   public HelpAttribute(string url) {  // url is a positional parameter  
      ...  
   }  
   public string Topic {  // Topic is a named parameter  
      get {...}  
      set {...}  
   }  
   public string Url { get {...} }  
}  
defines an attribute class named HelpAttribute that has one positional parameter (string url) and one named parameter (string Topic). Although it is non-static and public, the property Url does not define a named parameter, since it is not read-write.

This attribute class might be used as follows:
[Help("http://www.mycompany.com/.../Class1.htm")]  
class Class1 {  
}  
[Help("http://www.mycompany.com/.../Misc.htm", Topic ="Class2")]  
class Class2 {  
}  
end example]