Q:

Spaces in C# Enums

Is there any way to put spaces in a C# enum constant?  I've read that you can do it in VB by doing this:
Public Enum EnumWithSpaces
  ConstantWithoutSpaces
  [Constant With Spaces]
End Enum

...and then access it like this:
Public Sub UsingEnumWithSpaces()

  Dim foo As EnumWithSpaces = EnumWithSpaces.[Constant With Spaces]

End Sub

That implies to me that the CLR can handle an enum with spaces.  
Is there any way to do this in C#?

A:

This blog post might help you:

http://blog.spontaneouspublicity.com/2008/01/17/associating-strings-with-enums-in-c/

From the article:

But enums can't have spaces in C#!"
  you say. Well, I like to use the
  System.ComponentModel.DescriptionAttribute
  to add a more friendly description to
  the enum values. The example enum can
  be rewritten like this:

public enum States
{
    California,
    [Description("New Mexico")]
    NewMexico,
    [Description("New York")]
    NewYork,
    [Description("South Carolina")]
    SouthCarolina,
    Tennessee,
    Washington
}

Notice that I do not put descriptions on items where the ToString() version of that item displays just fine.

A:

CLR can handle absolutely any character in identifiers. However, C# restricts the identifier characters to those legal under the CLS, which space isn't. Same goes for VB.NET, by the way - spaces inside square brackets used to work in VB6, but they don't in VB.NET.

