It's been a while, but from memory I think C# allows you to override keywords and use them as variable names when prefixed with @
The compiler knows what you're doing. A keyword like 'field's inside a function's braces just isn't valid. Putting 'field' after a type name in a variable declaration makes as much sense as 'private int class;'