An Identifier is an IdentifierName that is not a ReservedWord.
In .NET CLR languages, you can use Unicode for identifiers like in JS, but an interesting side-effect of the 'common' aspect of the CLR is that you can use reserved keywords too. This is because reserved words in one language are not necessarily reserved words in another language.
Someone could write the following valid definition in VB.NET:
Public Property ushort() AS Integer
And because it's a reserved keyword in C# you'd have to reference it using the '@' escape:
foo.@ushort = 123;
(There are probably far more confusing examples than this)
In .NET CLR languages, you can use Unicode for identifiers like in JS, but an interesting side-effect of the 'common' aspect of the CLR is that you can use reserved keywords too. This is because reserved words in one language are not necessarily reserved words in another language.
Someone could write the following valid definition in VB.NET:
And because it's a reserved keyword in C# you'd have to reference it using the '@' escape: (There are probably far more confusing examples than this)