Why does this declaration,
public enum ECountry : long { None, Canada, UnitedStates }
require a cast for any of its values?
AFAIK, you have got to cast.
The MSDN article says:
"However, an explicit cast is needed to convert from enum type to an integral type" (either int or long)
You can check it out:
Enumeration types (C# reference)