After reading
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/ despite the document listing a list of Reserved keywords and a list of Contextual keywords, as well stating how any new keyword added to the C# language will be a contextual keyword... it mentions only "one" difference between Reserved Keywords and Contextual keywords in C#.
Being that a Reserved keyword (e.g. `namespace`, `class`, `int`, `static`, `using`, etc..) cannot be used as an identifier (e.g. namespace identifier, type identifier, type member identifier, etc..) unless it is prefixed with `@`. For example:
namespace @namespace
{
public class @class
{
public int @int = 4;
}
}
While a Contextual keyword (e.g. `global`, `add`, `var`, `await` etc...) can be used as an identifier (e.g. namespace identifier, type identifier, type member identifier, etc..) without the need to utilize any special character, before a contextual keyword, to do so. For example:
namespace global
{
public class add
{
public int var = 4;
}
}
Is that really the only difference between a Reserved keyword and a Contextual keyword in C#? Perhaps there is more to it than that in terms of why the above rule exists?
What I have tried:
C# language question concerning C# keywords (reserved and contextual). There is no specific online resource that answer the above question.