This set of rules applies to Visual Basic, but there should be a similar set for C#:
An element name in Visual Basic must observe the following rules:
It must begin with an alphabetic character or an underscore (_).
It must only contain alphabetic characters, decimal digits, and underscores.
It must contain at least one alphabetic character or decimal digit if it begins with an underscore.
It must not be more than 1023 characters long.
However, the following also applies:
Element names starting with an underscore (_) are not part of the Common Language Specification (CLS), so CLS-compliant code cannot use a component that defines such names. However, an underscore in any other position in an element name is CLS-compliant.
The above was from the MSDN Documentation.
Here is a link to the Common Language Specification documentation on MSDN which, in turn, references the ultimate arbiter of the CLS naming convention: Annex 7 of Technical Report 15 of the Unicode Standard 3.0.